方法参数冲突

时间:2019-03-08 05:20:30

标签: java arrays class parameters int

这是我的教授提供的部分客户,我不允许对其进行更改。

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)。

1 个答案:

答案 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];
    } 
}

或者如果仅应使用一个构造函数,请将其作为一个函数。