1.Scanner对象

  • next()
    1. 一定要读取到有效字符后才可以结束输入
    2. 对输入有效字符之前遇到的空白,next()方法会自动将其去掉
    3. 只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符
    4. next不能得到带有空格的字符串

  • nextLine():
    1. 以Enter为结束符,也就是说nextLine()方法返回的是输入回车之前的所有字符
    2. 可以获得空白

2.nextLine()示例

package com.xf233.com;
import java.util.Scanner;
public class Demo1 {
    public static void main(String[] args) {
        
        Scanner scanner = new Scanner(System.in);
        System.out.println("使用nextline方式接收:");
        if (scanner.hasNextLine()){
            String data=scanner.nextLine();
            System.out.println("输入内容为::"+data);
            
        }
    scanner.close();
    }
}

备注:这里的 if (scanner.hasNextLine()) 其实可有可无,这个判断是用来检测是否有下一个输入,但在用户输入时应该不会返回false,所以 scanner.hasNextLine() 应该是用在Scanner的高级用法中,如以换行键为分隔符,利用循环语句取一个txt文档内所有人的名字时,当读取完最后一个名字时,再往下读取 scanner.hasNextLine() 会返回false,以此作为标志我们可以跳出循环,如下所示

package com.xf233.com;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Demo1 {
    public static void main(String[] args) {
        Scanner scanner = null;
        try {

            scanner = new Scanner(new File("C:/1.txt"));

        } 
        catch (FileNotFoundException e) {
            e.printStackTrace();
        }

        while (scanner.hasNext()) {
            System.out.println(scanner.nextLine() );
        }

        /*如上例子,没有下一个的时候就返回false了*/
        /*此处的try/catch作用为异常处理*/

    scanner.close();
    }
}

3.进阶用法

利用hasNextInt()来判断输入的数据类型

package com.xf233.com;
import java.util.Scanner;
public class Demo1 {
    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);
        System.out.println("使用nextline方式接收:");
        if (scanner.hasNextInt()){
            String data=scanner.nextLine();
            System.out.println("输入的整数为::"+data);
        }
        else{
            System.out.println("输入的不是整数");
        }
    scanner.close();
    }
}

②利用循环结构来计算输入的整数值

package com.xf233.com;
import java.util.Scanner;
public class Demo1 {
    public static void main(String[] args) {
        int sum=0;
        int m=0;
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入整数数字:");
        while (scanner.hasNextInt()){
            int x = scanner.nextInt();
            ++m;
            sum=sum+x;
        }
        System.out.println("输入的数字总和为:"+sum);
        System.out.println("输入的数字平均值为:"+(sum/m));
    scanner.close();
    }
}

You got to put the past behind you before you can move on.