Я пишу следующий код, который будет читать строку, преобразовывать их в целое число и подсчитывать, сколько четных, нечетных и нулевых цифр в строке.Получение неправильного результата после сравнения данных
Но проблема в том, что всякий раз, когда я ввожу ноль, он будет делать расчет в countEven в моем коде, а не countZero.
Что случилось с моим кодом?
У меня нет проблем с подсчетом цифр и нечетных цифр в моем коде, это всего лишь нули.
Scanner stdin = new Scanner(System.in);
String str = "";
int countOdd = 0, countEven = 0, countZero = 0;
str = stdin.nextLine();
char[] breakDown = str.toCharArray();
Integer convertInt;
for (int i = 0; i < breakDown.length; i++) {
convertInt = new Integer(breakDown[i]);
if (convertInt % 2 == 1)
countOdd++;
if (convertInt % 2 == 0 && convertInt != 0)
countEven++;
if (convertInt == 0)
countZero++; }
Да, это лучшее решение, чем мое, это работает, потому что коды ASCII цифр 0-9 находятся между 0x30 и 0x39. Так, например, 1 - 0x31, и это нечетно. – lwi
А я вижу !!! Спасибо и спасибо lwi^_^Другими словами, он преобразует символ «0» в код ASCII, а не напрямую преобразует его в тип int, правильно? Еще один вопрос: тип char (breakdown [i]) можно разделить по числам, если эти символы являются числами, правильно? – user2789240
Если вы попытаетесь сделать арифметику с символом 'char', это будет рассматриваться как число. Он не должен находиться в диапазоне от «0» до «9». –