今天做华为笔试时遇到一个问题,往常给的测试用例输入总是会先指明有几条测试用例,之后用for循环输入就行了。但是今天在笔试时他给的输入并没有规定会有多少条字符串。
结果导致死活读不进去输入。
我用的是Scanner来读取系统输入,用的是以下方法:
Scanner in = new Scanner(System.in);
while(in.hasNext()){
String s = in.nextLine();
list.add(s);
}
用上面代码时,程序会卡在最后一条输入上。
假设输入为
aa
bb
cc
结果在输入了cc之后程序卡死。
我又试着在里面加上判断:
while(true){
if(in.hasNextLine()){
list.add(in.nextLine());
}else{
break;
}
}
但是依然在最后一行卡死。这种最后输入没有空行,没有结束符,也没有规定输入数据量的测试用例该怎么进行输入呢?
https://www.jianshu.com/p/17905723a543
in.hasNextLine()返回都是真,比较简单就是:比较把数字0当做结束符,那么如果输入0时结束循环就OK啦,当然这不是最佳的方法