这是我的教授提供的部分客户,我不允许对其进行更改。
public static void print (String title, int [] anArray) {
System.out.print(title + ": ");
for (int i = 0; i < anArray.length; i++) {
System.out.print(anArray[i] + " ");
}
System.out.println();
}
public static void main (String [] args) {
System.out.println("\nTesting constructor");
ScoreList list1 = new ScoreList(13);
System.out.println("\nTesting accessor (getter)");
int[] list1_array = list1.getScores();
System.out.println("\nTesting toString");
System.out.print("list1: " + list1);
System.out.println("\nTesting our print method");
print("list1's array", list1_array);
ScoreList list2 = new ScoreList(list1_array);
System.out.println("\nTesting list1 and list2");
System.out.println("list1: " + list1);
System.out.println("list2: " + list2);
System.out.println("\nTesting equals");
System.out.println("It is " + list1.equals(list2)
+ " that list1 is equal to list2");
if (!list1.equals(list2)) {
System.out.println("Error. The equals method does not work correctly");
System.exit(1);
}
这是我编写的代码的一部分,将由该客户端进行测试:
int [] scores;
public ScoreList(int size) {
if (size >= 1) {
this.scores = new int [size];
for(int i = 0; i < this.scores.length; i++) {
this.scores[i] = random(100);
}
}
else {
System.out.println("Length of array must be greater than or equal to 1.");
}
}
public ScoreList(int [] size) {
if (size.length >= 1) {
this.scores = new int [size.length];
for(int i = 0; i < this.scores.length; i++) {
this.scores[i] = random(100);
}
}
}
private int random(int randomAmount) {
Random rand = new Random();
int randomNumber = rand.nextInt(randomAmount);
return randomNumber;
}
public int [] getScores() {
int [] temp = new int [scores.length];
for(int i = 0; i < scores.length; i++) {
temp[i] = this.scores[i];
}
return temp;
}
这里的错误是list1和list2永远不会相等,因为我有2个构造函数,一个接受int作为参数,另一个接受int []。它们都同时调用random()以提供list1和list2的元素。为了使它们相等,我认为应该只有一个构造函数,因此random()将仅被调用一次。但是,参数冲突。根据客户端,您看到list1的参数是13,一个int; list2的参数是int []。
这是我从教授那里得到的有关如何为此类创建构造函数的说明:
只有一个参数(此对象的scores数组的大小)的构造函数, 是≥1。它将创建一个提供的大小的数组,然后用随机数填充该数组 0到100之间的整数(包括0和100)。
答案 0 :(得分:2)
我不确定您到底想要什么,但是我想您只是创建了一个函数,用于从另一个函数创建新数组。
第二个构造函数可能如下所示。
public ScoreList(int[] array) {
// If you have to check array size, do it in here.
this.scores = new int[array.length];
for(int i=0;i<array.length;i++) {
this.scores[i] = array[i];
}
}
或者如果仅应使用一个构造函数,请将其作为一个函数。