#java
#java
Вопрос:
Сейчас я нахожусь на уроке программирования в средней школе, и мои инструкции заключались в создании программы, которая хранит случайные числа в массиве, отсортированном по четным, а затем нечетным числам. Вот мой код до сих пор, я понятия не имею, почему он не работает. Он продолжает выводить 0, хотя я должен генерировать числа выше 1. Помощь будет с благодарностью, спасибо! : D
Random rnd = new Random();
int randomNumArray[] = new int[10];
int evenArray[] = new int[10];
int oddArray[] = new int[10];
int countEven = 0,countOdd = 0;
for (int i = 0; i < randomNumArray.length; i )
{
randomNumArray[i] = rnd.nextInt(100) 1;
System.out.println(randomNumArray[i]);
if (randomNumArray[i] % 2 == 0)
{
evenArray[i] = randomNumArray[i];
countEven ;
}
else if (randomNumArray[i] % 2 == 1)
{
oddArray[i] = randomNumArray[i];
countOdd ;
}
}
for (int i = 0; i < countEven; i )
{
System.out.println(evenArray[i]);
}
for (int i = 0; i < countOdd; i )
{
System.out.println(oddArray[i]);
}
Комментарии:
1. Пожалуйста, уточните. В массиве четного размера нет среднего числа.
Ответ №1:
Проблема в том, что вы сохраняете значения в evenArray
индексе и oddArray
в индексе i
, что не обязательно является «следующим неиспользуемым пространством» в массиве, в который вы записываете. Допустим, первое число (когда i = 0
) четное, а второе (когда i = 1
) нечетное; когда второе число сохраняется oddArray[i] = randomNumArray[i];
, оно будет сохранено с индексом 1, но это первое нечетное число, поэтому вместо него оно должно быть oddArray
с индексом 0.
Чтобы решить эту проблему, вы можете использовать countEven
и countOdd
в качестве правильных индексов для записи; например, когда countOdd
равно 0, тогда нечетных чисел еще нет, поэтому индекс 0 является правильным местом для записи первого. Таким образом, вы можете изменить эти две строки:
if (randomNumArray[i] % 2 == 0)
{
// changed here
evenArray[countEven] = randomNumArray[i];
countEven ;
}
else if (randomNumArray[i] % 2 == 1)
{
// changed here
oddArray[countOdd] = randomNumArray[i];
countOdd ;
}
Ответ №2:
Вы должны изменить эти строки
evenArray[countEven] = randomNumArray[i];
oddArray[countOdd] = randomNumArray[i];
… вместо
evenArray[i] = randomNumArray[i];
oddArray[i] = randomNumArray[i];