Java - неожиданный перерыв при вводе символа

Новичок в 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;
   }
}

Вы просите двойной, но ваш сканер получает scnr.nextInt() - вы видите проблему с этим? Разве scnr.nextDouble() не был бы более подходящим?

Hovercraft Full Of Eels 14.07.2018 00:23

Да! Теперь работает отлично. Я больше знаком с Python (хотя все еще новичок в этом), поэтому сканер меня запутал. Огромное спасибо.

jkreish 14.07.2018 00:25
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
2
93
2

Ответы 2

Читая 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 (). Также при вводе двойного символа используйте «,» в качестве разделителя, а не «.»
Он должен работать :)

Другие вопросы по теме