2016-02-05 64 views
1

我已经给出一个驱动器,其看起来如下:如何解决这个“找不到符号”的实例?

public class LabTest_Driver 
{ 
    public static void main (String[] args) 
    { 
     int[] list = new int[20]; 
     System.out.println(); 
     makeList (list); 
     System.out.print("\n" + "The original (unsorted) list is:" + "\n"); 
     showArray(list); 
       . 
       . 
       . 
    } 
} 

的makeList构造是假设使列表的长度的阵列100和199(含)

20张之间不同的非重复数

这是迄今为止我的课:

import java.util.Scanner; 
import java.util.Random; 

public class LabTest 
{ 
    private static int[] list; 

public void makeList(int[] list) 
{ 
    Random ran = new Random(); 
    this.list = list; 
    int n = list.length; 
    for (int element : list) 
    { 
     int w = ran.nextInt(100) + 99; 
     list[element] = w; 
     w = 0; 
    } 
} 

public void showArray(int[] b) 
{ 
    for (int element : list) 
    { 
     System.out.print(list[element] + " "); 
    } 
} 

}

当我按下编译说到瓦特ith一个错误消息说“找不到符号 - 方法makeList(int [])”,但我没有正确地构造该构造函数。如果有人能澄清这一点,并帮助我解决我的编程问题,那将是惊人的。

+0

我想你需要做'makeList'为'static'然后调用'LabTest.makeList(list);'而不是'makeList(list);' – Hackerdarshi

+0

很确定你不能只使用this.list = list,我认为有一个你应该使用的复制方法。 – James

+0

他们甚至不在同一班。要么是静态的,要么通过类,要么通过它所在的类的实例来调用它。 – Stultuske

回答

1

这是因为你有两个不同的类Lab_DriverLabTest。您必须创建类LabTest的新对象,然后在该对象上调用您的方法,即makeList()showList()。或者,如果这两种方法是static,则可以通过在LabTest前加上前缀直接呼叫它们。

以下是更正后的代码片段:

public static void main (String[] args) 
{ 
    int[] list = new int[20]; 
    System.out.println(); 
    LabTest labTest = new LabTest(); 
    labTest.makeList(list); 
    System.out.print("\n" + "The original (unsorted) list is:" + "\n"); 
    labTest.showArray(list); 
      . 
      . 
      . 
} 

或者,如果你把你的方法static,你可以这样做:

public static void main (String[] args) 
{ 
    int[] list = new int[20]; 
    System.out.println(); 
    LabTest.makeList(list); 
    System.out.print("\n" + "The original (unsorted) list is:" + "\n"); 
    LabTest.showArray(list); 
      . 
      . 
      . 
} 
相关问题