校招时由于有些公司的题的输入是一个数组,但是没有告知数组的长度,所以在使用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]