Java处理控制台输入的长度可变的数组数据

    xiaoxiao2021-04-05  31

    问题由来

    Java编程中有的时候我们会在控制台输入长度可变的数组数据(分隔符一致),例如:

    1 2 3 4 5 6

    或者

    1,2,3,4,5,6,7

    然后对这串未知长度的数据进行处理,得到对应类型的数组。

    分析

    1.由于长度可变,所以不能直接用数组去接受,可以用ArrayList存储。 2.控制台输入,可以用Scanner对象的标记读取next()方法进行处理。 3.这里要提一下,默认情况下,Scanner对象的分隔符是空格,如果是“,”等其他类型的分隔符需要使用userDelimiter(String regex)方法设置新的分隔符模式。 4.next()方法读取一个由分隔符分隔的字符串,nextLine()读取一个以换行符结束的行。

    代码

    处理空格为分隔符的数据(以0作为结束标识)

    public class InputTest { public static void main(String[] args) throws Exception { Scanner input = new Scanner(System.in); ArrayList<Integer> array = new ArrayList<>(); while (!input.hasNext("0")) {//结束标识符 array.add(Integer.valueOf(input.next())); } for (Integer e : array) { System.out.print(e + " "); } } }

    缺点:因为input.hasNext()永远为true,即控制台会无限输入,而不会停止。所以必须指定结束的标识符。

    处理分隔符的数据(通用)

    public class InputTest { public static void main(String[] args) throws Exception { Scanner input = new Scanner(System.in); ArrayList<Integer> array = new ArrayList<>(); String s = input.nextLine(); String[] s1 = s.split(",");//此处修改分隔符类型 for (int i = 0; i < s1.length; i++) { array.add(Integer.valueOf(s1[i])); } for (Integer e : array) { System.out.print(e + " "); } } }

    优点:相较于上面那种方法,这种方法适用于任何分隔符,且无需结束标识符。

    转载请注明原文地址: https://ju.6miu.com/read-666371.html

    最新回复(0)