Что это за случайные 0 и почему мое среднее не работает?
<pre>scan = new Scanner(System.in); try { System.out.print("Please enter the filename for the integer values: "); File file = new File(scan.nextLine()); scan = new Scanner(file); System.out.println("Integer Array Contents: "); String del = ""; int totalOdd = 0; int lastZero = -1; int minimum = Integer.MAX_VALUE; int maximum = Integer.MIN_VALUE; int sum = 0; double mean; int totalIndex = 0; int[] oddNumbers = new int[15]; int arrayIndex = 0; while (scan.hasNextLine()) { int num = Integer.parseInt(scan.next()); //parse the number into an integer. System.out.print(del + num); del = ", "; if (num%2!= 0) { //it's odd oddNumbers[arrayIndex] = num; //you have to use the arrayIndex variable here arrayIndex++; totalOdd++; //technically we could combine these vars if we wanted } if (num == 0) { lastZero= totalIndex; } if (num < minimum) { minimum = num; } if (num > maximum) { maximum = num; } sum += num; totalIndex++; } mean = sum/totalIndex; System.out.println(); System.out.println("Total odd numbers: " + totalOdd); System.out.print("Odd numbers are: "); for (int i = 0; i < totalIndex; i++) { System.out.print(oddNumbers[i] + " "); } System.out.println(); System.out.println("Index of last zero: " + lastZero); System.out.println("Minimum: " + minimum); System.out.println("Maximum: " + maximum); System.out.println("Sum: " + sum); System.out.println("Element mean is: " + mean); scan.close(); } catch (Exception ex) { ex.printStackTrace(); } } }
Мой выход:
Integer Array Contents: -3, 2, 0, 0, 1, -5 Total odd numbers: 3 Odd numbers are: -3 1 -5 0 0 0 Index of last zero: 3 Minimum: -5 Maximum: 2 Sum: -5 Element mean is: 0.0
Почему эти 3 0 находятся в разделе "нечетные числа:" и как мне избавиться от них, чтобы просто показать другие числа.
Почему это средство не работает? Среднее значение должно быть: -0,833
Что я уже пробовал:
Первоначально у меня было много проблем с форматированием, min и max, но теперь это то, что я делаю, и не могу понять, что я делаю неправильно.
ZurdoDev
Просто отладьте свой код и пройдитесь по нему строка за строкой, и вы сможете точно увидеть, что происходит.
way245
Я сделал. Вот почему я здесь.
ZurdoDev
Вы спросили, почему появляются 0. Отладьте свой код и посмотрите, что происходит в каждой строке. Вы поймете, почему он делает то, что делает.
way245
Ошибок в коде нет, так что отладчик мне не помогает. Я знаю,что это связано с моей петлей for. У вас есть какие-нибудь идеи?
ZurdoDev
"В коде нет ошибок, поэтому отладчик мне не помогает" - это распространенное непонимание того, что такое отладчик. Отладчик позволяет вам шагать по строке за строкой, видеть значения переменных и наблюдать, как они меняются по мере выполнения каждой строки. Отладчик не находит ошибок. Это и есть компилятор. Это самый важный инструмент, который есть у разработчика, и его гораздо проще использовать, чем думают некоторые.
way245
Я понимаю, что происходит, просто не понимаю, как я это исправлю. Который является, почему я пришел сюда.
ZurdoDev
Тогда почему он печатает 0s? Если вы знаете, почему, то вы можете это исправить.
Я не собираюсь запускать ваш Код, да и не смогу, даже если бы захотел. И если бы вы знали, как пройти строчку за строчкой, вы бы решили эту проблему быстрее, чем вам потребовалось бы даже опубликовать вопрос.
И тот факт, что вы продолжаете отвечать, говорит мне, что вы все еще не отладили код.
Dave Kreskowiak
Отладчик не предназначен для отладки вашего кода. Он предназначен для отладки вас и вашего понимания кода, который вы написали. Отладчик - это инструмент, который поможет вам понять, что делает ваш код.
Rick York
При вычислении среднего значения, вероятно, было бы лучше сначала вычислить сумму всех переменных, а затем разделить на количество после того, как вы суммировали все значения.