为何Scanner读取系统输入时无法结束

今天做华为笔试时遇到一个问题,往常给的测试用例输入总是会先指明有几条测试用例,之后用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啦,当然这不是最佳的方法