用户交互Scanner
  • java.util.Scanner是java5的新特征,通过Scanner类来获取用户的输入
  • 基本语法:
Scanner s=new Scanner(System.in)
  • 通过Scanner类的next()与nextLine()方法来获取输入的字符串,在读取前我们一般需要使用hasNext()与hasNextLine()判断是否还有输入的数据

Scanner对象

next()接收只能接收出第一个词

package Flowcontro;

import java.util.Scanner;

public class Demo01 {
    public static void main(String[] args) {
        //创建一个扫描器对象,用于接收键盘数据
        Scanner scanner = new Scanner(System.in);
        if (scanner.hasNext()){  //判断是否有输入;此处默认为true,即有输入才有输出
            String a=scanner.next();//运行到该行时,等待输入,使用nextLine的方式接收
            System.out.println(a);//输出

        }//因此输入输出的指令代码,需要在if中括号里面
        scanner.close();
        //凡是输入IO流的类如果不关闭就会一直占用资源,要养成好习惯用完就关掉
    }
}

即,当输入:Hanker is a handsome boy.

​ 只输出:Hanker

nextLine()接收可以接收出整句

package Flowcontro;

import java.util.Scanner;

public class Demo02 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        if (scanner.hasNextLine()){
            String b=scanner.nextLine();
            System.out.println(b);
        }
        
        scanner.close();
    }
}

即,当输入:Hanker is a handsome boy.

​ 可输出:Hanker is a handsome boy.

不用判断

package Flowcontro;

import java.util.Scanner;

public class Demo03 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);//创建新扫描对象
        String c= scanner.nextLine();//接收对象
        System.out.println(c);//输出对象
        
        scanner.close();
    }
}

差异

next():

1.一定要读取到有效字符后才可以结束输入;

2.对输入有效字符之前遇到的空白,next()方法会自动将其去掉;

3.只有输入有效字符后,才将其后面的空白作为分隔符或者结束符;

4.next()不能得到带有空白的字符串。

nextLine()

1.以Enter为结束符,也就是说nextLine()方法返回的时输入回车之前的所有字符

2.可以获得空白。