Java机试时Scanner的用法:单行/多行输入

转载至这儿

博主总结的太到位了。

另外,还有一些自己的理解:

        String nextLine = scanner.nextLine();
        String[] str = nextLine.trim().split(" ");
        System.out.println(Arrays.toString(str));
        int[] num = new int[str.length];
        for (int i = 0,j=0; i < str.length; i++) {
            num[i]=Integer.parseInt(str[i]);
        }
        System.out.println(Arrays.toString(num));

这个主要是用于【输入多行,而每行的输入个数无法确定的情况】
而且还可以根据需要决定是否转化为数值型变量

        Scanner scanner = new Scanner(System.in);


        int m = scanner.nextInt();
        String str = scanner.nextLine();
        System.out.println(m);
        System.out.println("*"+str+"*");
        //  输入:123 aaa
        //  第一行输出123
        //  第二行输出* aaa*

        // 输入123
        // 第一行输出123
        // 第二行输出**

        // 输入123
        // 第一行输出123
        // 第二行输出* *

// 总结:
0. .nextXxx() 方法遇到分隔符的时候,光标仍停留在这一行。而 .nextLine() 方法遇到分隔符的时候却会换行
1.几乎除了 .nextLine() 之外,所有的区分分隔符都是 空格 " "或者【回车】
2.【在同一行输入中】 可以使用多个除了 .nextLine() 之外的方法。分割划分变量很简单,遇到空格就可以得出一个变量
3.而对于 .nextLine() 方法,则是【一遇到回车就立马换行】,顺便保存点东西
4.那保存的是什么呢? 可能在同一行的前面还有多个别的 .nextXxx() 方法。而着多个方法得到的变量的子后一个变量一定是以空格符或者回车区分的。 那么此时, .nextLine()方法则会记录下最后一个变量的最后一个字符的之后的所有字符汇总成一个变量(当然,不包括回车)
然后这所有的字符又可以赋值给一个字符串变量
说这么多就是为了说明一点:只调用 .nextLine() 方法,而不选择赋值给变量的话,则就是为了【单纯的换行而已!】

你可能感兴趣的:(java)