Новичок в Java, не умеющий понять, почему это не работает, он неожиданно останавливается на полпути при получении пользовательского ввода. Я прокомментировал, где он ломается. Сообщение об ошибке : «Исключение в потоке» main «java.util.InputMismatchException»
Кто-нибудь может помочь?
import java.util.Scanner;
public class BasicInput {
public static void main(String[] args) {
Scanner scnr = new Scanner(System.in);
//Initializations
int userInt = 0;
double userDouble = 0.0;
String userString = "";
char character = '?';
//Take User Input
System.out.println("Enter integer: ");
userInt = scnr.nextInt();
System.out.println("Enter double: ");
userDouble = scnr.nextInt();
/* ERROR OCCURS HERE */
System.out.println("Enter character: ");
character = scnr.next().charAt(0);
System.out.println("Enter string: ");
userString = scnr.next();
//Print User Input
System.out.println(userString);
System.out.print(character);
System.out.print(userDouble);
System.out.print(userInt);
//Cast double to an integer
int userInt2 = 0;
userInt2 = (int)userDouble;
System.out.print(userInt2);
return;
}
}
Да! Теперь работает отлично. Я больше знаком с Python (хотя все еще новичок в этом), поэтому сканер меня запутал. Огромное спасибо.




Читая int вместо double, измените его на double, как показано ниже
//Take User Input
System.out.println("Enter integer: ");
userInt = scnr.nextInt();
System.out.println("Enter double: ");
userDouble = scnr.nextDouble();
Ошибка возникает, когда вы назначаете значение scnr.nextInt () для userDouble. Вам следует использовать scnr.nextDouble (). Также при вводе двойного символа используйте «,» в качестве разделителя, а не «.»
Он должен работать :)
Вы просите двойной, но ваш сканер получает
scnr.nextInt()- вы видите проблему с этим? Развеscnr.nextDouble()не был бы более подходящим?