Java标准输入Scanner中的hasNext如何终止(校招笔试踩坑)

2023年5月29日13:08:53

校招时由于有些公司的题的输入是一个数组,但是没有告知数组的长度,所以在使用hasNext时会形成死循环,退出死循环正常来讲只能在while中加入条件来判断,满足条件后break。有些公司直接没有终止符的提示,但是在做携程的笔试题时给了以“#”为终止符,但是笔试时还是没有弄明白如何处理。在用sc.next()判断是否等于“#”时,会将该输入用来作为判断使用,也就是把输入数据“吞了”,笔试后查了查资料,写了个demo测试了一下在这里做一个记录:

利用hasNext的重载方法:

public class StandardInput {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        List<Integer> list = new ArrayList<>();
        while(!sc.hasNext("#")){
            int a = sc.nextInt();
            list.add(a);
        }
        System.out.println(list);
    }
}

输出:

1 2 3 4 5 6 #
[1, 2, 3, 4, 5, 6]

  • 作者:Liar_27
  • 原文链接:https://blog.csdn.net/Liar_27/article/details/109063297
    更新时间:2023年5月29日13:08:53 ,共 469 字。