代码在不同 IDE 上表现不同

Code Behaving Differently On Different IDE

我正在编写一个程序,它获取有关田径比赛的信息,然后用它进行一些计算。我现在遇到的问题仅出现在第一个用户输入部分。

我首先在 BlueJ 中编写了我的代码,并且运行良好。然后,我尝试在 JCreator 中编译它并开始出现此错误,程序在进入下一段代码之前只能接收 3 个用户输入,而它本应接收 5 个(我在 BlueJ 中编译时确实如此)。

然而,当我在输入语句之后放置一个 System.out.println 语句时,程序(在 JCreator 中)在继续之前确实收到了所有 5 个语句。当我再次注释掉它时,它只收到了 3 个语句才继续。这是下面的代码。

    String[] events = new String[5];

    System.out.println("Please enter the 5 events in this competition.");
    for(int i = 0; i < events.length; i++)
    {
        events[i] = input.nextLine();
        System.out.println(i);
    }

这是 System.out.println 语句的输出。

这是 System.out.println 语句 注释掉的输出。

您的问题的可能原因是 newline 个字符,这些字符被解释为行。您的输入缓冲区中似乎有额外的换行符。

您可以检查 IDE 按下回车键时提供的字符。

您似乎正在使用 Scanner class 来读取输入。您可以尝试使用 InputStreamReader 包装 System.in,这可能会有所帮助。 (不确定,试试看)

Scanner input = new Scanner(new InputStreamReader(System.in)); events[i]=input.nextLine();

您也可以尝试使用 BufferedReader 来读取输入。

BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); events[i]=reader.readLine();

希望对您有所帮助!!

换行

events[i] = input.nextLine();

String newLine;
while( (newLine = input.nextLine()).isEmpty() );
events[i] = newLine;

这应该会消耗额外的 newline 个字符,让您只剩下 events.

中的合法输入