代码在不同 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
.
中的合法输入
我正在编写一个程序,它获取有关田径比赛的信息,然后用它进行一些计算。我现在遇到的问题仅出现在第一个用户输入部分。
我首先在 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
.