2013-11-16 2 views
1

Заключительной частью моего проекта, чтобы сделать два массива тестирования, чины [] и grades2 [] равного друг с другом в случайном порядке, чтобы проверить мой метод равенства заявления. Как правильно использовать java.util.Random? Или, если есть другой метод, я бы хотел его услышать ...Как сделать два массива случайным образом равны друг друг

В этом коде программа навсегда выводит, что эти два объекта различаются (очевидно), так как содержимое массивов генерируется случайным образом. Как сделать так, чтобы они были случайным образом равны друг другу?

public class GradeBookClient 
{ 
    public static GradeBook classRoom1, classRoom2; 
    public static void main(String [] args) 
    { 
    //Create two new arrays for testing the equals() method 
    int[] grades = new int[100]; 
    int[] grades2 = new int[100]; 

    for (int i = 0; i <= grades.length-1; i++) 
    { 
     grades[i] = (int) Math.floor(Math.random()*101); 
    } 

    for (int i = 0; i < grades2.length; i++) 
    { 
     grades2[i] = (int) Math.floor(Math.random()*101); 
    } 



     classRoom1 = new GradeBook (grades); 
     System.out.println("The class size is " + classRoom1.getStudent() + " students." + "\n" + classRoom1.toString()); 


     classRoom2 = new GradeBook (grades2); 
     System.out.println("The class size is " + classRoom2.getStudent() + " students." + "\n" + classRoom2.toString()); 

     if (classRoom1.equals(classRoom2)) 
     System.out.println("Classroom 1 has the same grades and class size as Classroom 2."); 
     else 
     System.out.println("Classroom 1 and Classroom 2 have different grades and class sizes."); 
    } 
} 

ответ

2

Я не знаю, если я получил это право, потому что это не то, что понятно, но, возможно, вы должны идти с чем-то вроде этого:

//Create two new arrays for testing the equals() method 
int[] grades = new int[100]; 
int[] grades2 = new int[100]; 

for (int i = 0; i <= grades.length-1; i++) 
{ 
    int value = (int) Math.floor(Math.random()*101); 
    grades[i] = value; 
    grades2[i] = value; 
} 

, так что вы можете иметь две равные массивы заполнены тем же случайным значения

+0

Я просто сдаюсь, я соглашусь сделать их равными, чтобы он выводил это, я не знаю, чего хочет мой учитель. – PatGreens

3

Это оксюморон. Если он случайный, вы не можете сделать его равным друг другу.

Редактировать: Если вы хотите создать два идентичных массива, которые заполнены случайным образом, вы должны заполнить массив случайными числами, а затем скопировать его с помощью System.arraycopy() или что-то в этом роде.

+0

Я борюсь с логикой со своим учителем. Она сказала это по электронной почте: «Вы правы, используя случайные данные, очень маловероятно, что они будут одинаковыми. Вы могли бы создать 2 идентичных массива для тестирования, хотя» – PatGreens

+0

Создание одного массива, тогда создание копии представляет собой «создание 2 идентичных массивов» ». –

+0

Не скопируйте немного перебор? Он может построить два массива внутри одного и того же, чтобы избежать выполнения двух циклов только за одну операцию! – StepTNT

3

Как мне добраться до места, где они случайным образом равны друг другу?

Вы можете сначала решить, должны ли они быть равными. Если они должны быть, просто скопируйте grades в grades2 вместо генерации grades2 независимо от grades.

+0

Я предложил это ей, но потом она сказала мне, что я должен сделать две массивы идентичными друг другу. То, что это значит, вне меня, но я думаю, что я просто не буду беспокоиться об этом. В любом случае два класса в реальной жизни не могут иметь одинаковые оценки, нет логики для этого задания. – PatGreens

3

, если вы хотите, чтобы содержимое двух массива равных:

  • Помещенных чисел в одном массиве и скопировать в другой
  • еще генерировать случайное число с тем же seed

Random rand = new Random(seed);

если ваш seed равен, то rand.nextInt() сгенерирует такую ​​же последовательность символов номера.

1

Создайте первый массив, используя Random. Затем, если вы решите, что он должен быть равен второму массиву, просто создайте экземпляр нового массива того же типа и размера и скопируйте каждую позицию по одному.

+3

Это не создает два одинаковых массива. –

+0

Вы правы. Ред. –

Смежные вопросы