Я пытаюсь преобразовать следующую строку сканера в Int и проверить, что введенный текст является числом, если не система счисления, то это не число, а если число, то оно преобразуется в int и делится на десять.
Если я не проверяю условие в коде, код выполняется так, как он должен. Но если текст введен, он вычисляет значение индекса символов.
Если условие существует, то для каждого числа выполняется вычисление вместо суммирования числа Перед выполнением вычисления, но оно не рассчитывает значение индекса других символов.
Без проверки состояния:
Scanner inputtext = new Scanner(System.in);
System.out.print("Mata in ett tal: ");
String number = inputtext.next(); //Här matar användaren in text.
int sum = 0;
double number2 = 10.0;
for (int i=0; i < number.length(); i++) { //Här omvandlas texten till tal.
sum *= 10;
sum += (int) number.charAt(i)-(int)'0';
}
System.out.println("Resultat: " + sum); //Här matas talet ut.
System.out.println("Resultat delat med 10 : " + (sum/number2)); //Här divideras talet med 10.
}
}
При проверке:
Scanner inputtext = new Scanner(System.in);
System.out.print("Mata in ett tal: ");
String number = inputtext.next(); //Här matar användaren in text.
int sum = 0;
double number2 = 10.0;
for (int i=0; i < number.length(); i++) { //Här omvandlas texten till tal.
char ch = number.charAt(i);
if (ch == '0' || ch == '1' || ch == '2' || ch == '3' || ch == '4' || ch == '5' || ch == '6'|| ch == '7'|| ch == '8'|| ch == '9'){
sum *= 10;
sum += (int) number.charAt(i)-(int)'0';
} else {
System.out.println("Detta är inte ett tal");
break;
}
System.out.println("Resultat: " + sum); //Här matas talet ut.
System.out.println("Resultat delat med 10 : " + (sum/number2)); //Här divideras talet med 10.
}
}
}
Я ожидаю, что если введена строка, содержащая числа, то вычисление выполняется, если добавляются другие символы, то пользователю сообщают, что это не число