通过另一个类运行Class方法

时间:2010-10-28 04:05:56

标签: java

import java.util.Arrays;
import java.util.*;

class Main {
public static void main(String[] args) {

}
  }

 class List {


private static final int NUMINTS = 10;
public List(int numints) {

    int list[];
    list = new int[NUMINTS];

}

public void fillWithRandom(int list[]) {
 Random r;
 r = new Random();

 int i;

 for(i=0; i < NUMINTS ; i++)
     list[i] = r.nextInt();
} 

public void print(int list[]) {
    int i;
    System.out.println("before sort():");
    for(i=0 ; i < NUMINTS; i++)
        System.out.println(list[i]);

    Arrays.sort(list, 0, NUMINTS);
    System.out.println("--------");
    System.out.println("after sort():");
    for (i = 0 ; i < NUMINTS; i++)
        System.out.println(list[i]);
}
   }

我想创建一个随机数组。我不太确定如何将我的类List中的方法实现到Main类中。我想要main来创建数组,然后将其打印出来。

2 个答案:

答案 0 :(得分:1)

看起来你在int数组和你创建的名为List的类之间感到困惑。因为你似乎很自然地传递int数组,我建议删除List类(或将其作为你的类并在那里添加一个main方法)。

事实上,只需要创建一个int [10],用随机数填充它,然后在你的main方法中打印出来。这将使您可以快速测试,而无需担心类,实例化和方法调用。然后,一旦你有了这个,将这些操作中的每一个抽象回到方法中,并使用main中的调用方法。

如果方法不是静态的,那么除非在类的实例上调用它,否则不能直接从静态方法(main)调用它。例如,你不能调用List.print(int []),因为它不是静态的,所以你必须创建一个List对象,然后在该对象上调用print(int [])。

tl; dr我正在努力提供一些提示/建议,因为这看起来很像一个家庭作业问题。

答案 1 :(得分:0)

您的代码中的一个问题是您没有使用传递的参数

    public List(int numints) { // numints never used, hence useless
       int list[];
       list = new int[NUMINTS];  // list is a local variable. It has no scope outside this 
                                 // method and the method also doesn't have any side-effect    
    }

现在,请问您如何在List班级的Main方法中调用main()班级的方法。

public static void main(String[] args) {
    List list = new List(10);
    int[] intArr = new intArr[10];

    list.fillWithRandom(intArr);
    list.print(intArr);
}

很少有建议,

  1. 最好声明数组类型,例如int[] arr;而不是int arr[]
  2. 如果您必须使用2个课程,那么您的int[] intArr;课程中应该有List。因此,您无需来回传递intArr
  3. 使用收到的参数初始化数组,而不是使用NUMINTS