Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-获取字符输入时出现意外中断_Java - Fatal编程技术网

Java-获取字符输入时出现意外中断

Java-获取字符输入时出现意外中断,java,Java,刚接触Java的人,很难弄清楚为什么这不起作用,在接受用户输入的中途,它意外地停止了。我已经评论了它在哪里中断。错误消息: 线程“main”java.util.InputMismatchException中出现异常 有人能帮忙吗 import java.util.Scanner; public class BasicInput { public static void main(String[] args) { Scanner scnr = new Scanner(Syste

刚接触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;
   }
}

读取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()
不是更合适吗?是的!现在效果很好。我对Python更为熟悉(尽管还处于初级水平),所以scanner对我来说是个困惑。非常感谢。