Конфликтующие параметры метода - PullRequest
0 голосов
/ 08 марта 2019

Это часть клиента, предоставленная моим профессором, и мне не разрешено вносить в нее изменения.

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 [].

Это инструкция, которую я получил от своего профессора о том, как создать конструктор для этого класса:

Конструктор с одним параметром,размер массива оценки этого объекта, который должен быть ≥ 1. Он создает массив заданного размера и затем заполняет этот массив случайными целыми числами от 0 до 100 включительно.

1 Ответ

2 голосов
/ 08 марта 2019

Я не знаю точно, что вы хотите, но я думаю, что вы просто создаете функцию, создающую новый массив из другого.

Второй конструктор может быть таким, как показано ниже.

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

или Если должен быть только один конструктор, сделайте его как функцию.

...