Java扫描器需要更多的输入

Java扫描器需要更多的输入,java,Java,我在第一个java程序中扫描用户输入时遇到了一些问题。当我编译并运行它时,会立即提示输入(即命令行停止并闪烁)。当我输入任何内容时,第一行被打印出来,要求我输入一个整数。然后打印第二行,并提示我输入另一个值 这个程序的输出是我输入的前两个值。这很难解释,但它基本上需要3个输入值,只使用两个 import java.util.Scanner; public class objects { public static void main(String[] args) { S

我在第一个java程序中扫描用户输入时遇到了一些问题。当我编译并运行它时,会立即提示输入(即命令行停止并闪烁)。当我输入任何内容时,第一行被打印出来,要求我输入一个整数。然后打印第二行,并提示我输入另一个值

这个程序的输出是我输入的前两个值。这很难解释,但它基本上需要3个输入值,只使用两个

import java.util.Scanner;

public class objects
{
   public static void main(String[] args)
   {
      Scanner sc = new Scanner(System.in);

      System.out.println("Enter an integer please...");
      int input = sc.nextInt();

      System.out.println("Enter your name please...");
      String name = sc.nextLine();

      System.out.println("The read values: " + input + ", " + name);

      sc.close();
   }
}
如果在println语句之后直接从控制台读取数据,请在println语句之后放置System.out.flush()命令

  Scanner sc = new Scanner(System.in);      
  System.out.print ("Enter your name please... ");
  String name = sc.nextLine();
  System.out.print ("Enter an integer please... ");
  int input = sc.nextInt();
  System.out.println ("The read values: " + input + ", " + name);

我只是把整数移到了名字下面,然后它就把它修好了。哈哈哈

当您输入一个数字时,按enter键,
nextInt()
使用该数字,但enter(\n)保持缓冲状态。在此之后,如果再次调用
nextLine()
,Java会尝试将
\n
转换为一个数字,给您一个
NumberFormatException
,但是如果调用
nextLine()
,它们会将enter作为空字符串读取

这里有一个更好的解释和一个解决方案


这似乎是我安装VirtualBox时的一个错误。不管我怎么做,问题依然存在。即使我尝试只读取一个整数,它也会要求我输入两个值


感谢所有试图帮助我的人,我在调试时学到了很多。

不可能要求您输入三次。粘贴你的输出。基本上它只要求一次,而不是三次。第一次它读取
int
,第二次它读取第一次输入的
回车
。我不知道如何最好地显示我的输出,所以这里是gyazo屏幕截图。你能使用另一个类似于oracle JDK的
javac
的编译器吗?看起来GNU编译器有一些缺陷。使用javac编译器时出现相同的错误。一定是虚拟机?这仍然给了我同样的问题。这仍然不适用于我,这是同样的错误。我甚至尝试过将intiger作为一行读取,然后使用Integer.parseInt,仍然是相同的问题。每次我想读取一个值时,创建一个新的scanner对象也会给我带来同样的问题。必须是我的虚拟机。。我不知道还有什么。这似乎是我安装VirtualBox时的一个错误。不管我怎么做,问题依然存在。即使我尝试只读取一个整数,它也会要求我输入两个值。