Java读取控制台多行输入存入ArrayList仅存隔行数据问题求助
问题解决:Java读取多行输入丢失隔行数据
问题出在你调用nextLine()的方式上:在while循环的判断条件里,你已经调用了一次input.nextLine()读取一行,但没有把这行数据保存下来,直接用来判断是否为空。紧接着循环体里又调用了一次input.nextLine(),这会读取下一行数据,相当于每次循环跳过了一行,所以最终只存储了偶数行的内容。
修正方法很简单:先把循环条件里读取的行保存到变量中,判断非空后再加入列表,避免重复读取:
System.out.println("Please enter your input: "); String line; while(input.hasNextLine() && !(line = input.nextLine()).isEmpty()) { System.out.println("new line is: " + line); inputStrings.add(line); } System.out.println("input is: " + inputStrings);
或者拆分逻辑,更清晰的写法:
System.out.println("Please enter your input: "); while(input.hasNextLine()) { String line = input.nextLine(); if(line.isEmpty()) { break; } System.out.println("new line is: " + line); inputStrings.add(line); } System.out.println("input is: " + inputStrings);
这样修改后,输入test1、test2、test3、test4,输出就会是期望的[test1, test2, test3, test4]。
内容的提问来源于stack exchange,提问作者Lucas
相关产品推荐
相关产品推荐

