Java如何获取多行字符串输入并判断输入结束 您所在的位置:网站首页 java从屏幕输入数据怎么输入 Java如何获取多行字符串输入并判断输入结束

Java如何获取多行字符串输入并判断输入结束

2024-06-12 05:22| 来源: 网络整理| 查看: 265

public static void main(String[] args) { Scanner sc = new Scanner(System.in); List list = new ArrayList(); List list1 = new ArrayList(); String s = null; while (!(s = sc.nextLine()).equals("")) { String[] str = s.split(","); for (int i = 0; i < str.length; i++) { list1.add(Integer.parseInt(str[i])); } list.add(list1); } System.out.println(list); }

整理自网络

为何不用Scanner 的hasNextLine方法判断结束?

根据输入来源的不同 ,Scanner 的hasNextLine方法会产生不同效果,若Scanner的输入来源来自文件你这样写是没有任何问题的, 但是你的输入来自控制台(System.in) 这时当程序执行到sc.hasNextLine()方法时发现是空白(因为你什么都还没有输入),这时hasNextLine方法 就会阻塞线程直到你在键盘上输入后才会继续执行,但问题是一旦输入任何字符后程序就会认为你已经输入了,既然有了输入那么hasNextLine 方法必然会返回true,你这个循环就成了死循环了,所有永远也跳不出来!

那么如何让程序认为你是要结束输入,而不是把你的任何输入当作正常的输入来对待呢,答案是 ctrl+z !输入ctrl+z 后就可以表达出你是要结束输入!这个就是一个结束的标志 相当于EOF

机考的时候,我需要读取多行字符串,而程序的输入是系统自己自动输入,我无法手动多添加一个空格或任何一个我定义的结束符。

现在想想,对于之前说的用ctrl+z我也是没有办法自己输入的,也就是说我只能写好程序,直接运行,系统会自动输入指定样式数据,所以我得知道我该怎么接收这种格式的输入,怎么结束输入。

这个问题,怎么解决啊?

hasNext() 判断扫描器中当前扫描位置后是否还存在下一段。 hasNextLine() 如果在此扫描器的输入中存在另一行,则返回 true。 next() 查找并返回来自此扫描器的下一个完整标记。 nextLine() 此扫描器执行当前行,并返回跳过的输入信息。 nextInt() 将控制台扫描的整形数据返回。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有