JAVA获取控制台输入Scanner

System.in

Java 的控制台输入由 System.in 实现,但操作起来复杂,一般都配合 Scanner 类 使用

Scanner 类

java.util.Scanner 是 Java5 的新特征,通过 Scanner 类可以很方便的获取用户输入

Scanner scanner = new Scanner(System.in);

nextLine()方法

获取控制台输入的字符串

Scanner scanner = new Scanner(System.in);
System.out.println("输入:");
System.out.println("scanner.nextLine()---" + scanner.nextLine());
scanner.close();

执行后,等待输入123 456

输出结果为:scanner.nextLine()--- 123 456

解释: 以 回车 为结束符,即:返回 回车之前的所有字符。

注意: 可以获得空格。

nextInt()方法

特点与next()方法相同,并将输入的内容转换成int型

Scanner scanner = new Scanner(System.in);
System.out.println("输入:");
int i=scanner.nextInt();
System.out.println(i);

执行后,等待输入:

  1. 输入123,执行结果如下:

    123
    
  2. 输入abc,执行报错,无法转换成int型

nextXXX()方法

同nextInt()方法,将输入内容转换成相应的类型

next() 方法

获取控制台输入的字符串

Scanner scanner = new Scanner(System.in);
System.out.println("输入:");
System.out.println("scanner.next()---" + scanner.next());
System.out.println("scanner.next()---" + scanner.next());
scanner.close();

执行后,等待输入:

  1. 输入空格,然后敲回车,没有反应
    解释:读取到有效字符后才可以结束输入

  2. 输入123,然后敲回车,结果如下:

    scanner.next()---123
    

    解释:有效字符之前的空格,next() 方法会自动去掉

  3. 输入123 456,然后敲回车,结果如下:

    scanner.next()---123
    scanner.next()---456
    

    解释:有效字符后面输入的空格作为分隔符

注意: 不能得到带有 空格 的字符串

next() 和 nextLine()不要一起使用

Scanner scanner = new Scanner(System.in);
System.out.println("输入:");
System.out.println("scanner.next()---" + scanner.next());
System.out.println("scanner.nextLine()---" + scanner.nextLine());
scanner.close();

执行后,输入:123敲回车
执行结果如下:

scanner.next()---123
scanner.nextLine()---

因为回车影响了获取数据,nextLine()方法没有获取到数据

练习

求和

键盘录入两个数据并求和,代码如下:

Scanner sc = new Scanner(System.in);
// 接收数据
System.out.println("请输入第一个数据:"); 
int a = sc.nextInt(); 
System.out.println("请输入第二个数据:"); 
int b = sc.nextInt();
// 对数据进行求和
int sum = a + b;
System.out.println("sum:" + sum);

取最值

键盘录入三个数据并获取最大值,代码如下:

// 创建对象
Scanner sc = new Scanner(System.in);
// 接收数据
System.out.println("请输入第一个数据:");
int a = sc.nextInt();
System.out.println("请输入第二个数据:"); 
int b = sc.nextInt(); System.out.println("请输入第三个数据:"); 
int c = sc.nextInt();
// 如何获取三个数据的最大值
int temp = (a > b ? a : b);
int max = (temp > c ? temp : c);
System.out.println("max:" + max);