1. Scanner(控制台输入)

1.1 概述

Scanner 是 Java 提供的用于接收控制台输入的工具类,属于引用数据类型

1.2 使用步骤

  • 1.2.1 导包:在类的最顶部导入,import java.util.Scanner;
  • 1.2.2 创建对象:遵循引用数据类型的创建格式 类名 变量名 = new 类名();
  Scanner sc = new Scanner(System.in);
  • 1.2.3 调用方法:通过对象调用输入方法获取用户输入

1.3 常用输入方法

方法说明
sc.next()读取一个单词,遇到空格停止
sc.nextLine()读取整行内容,遇到回车停止
sc.nextInt()读取一个整数
sc.hasNextInt()判断下一个输入是否为整数,返回 boolean
  • 1.3.1 next() 与 nextLine() 的区别next() 以空格为分隔符,只读取第一个单词;nextLine() 读取整行包括空格,直到回车为止

1.4 典型示例

  • 1.4.1 读取姓名和年龄
  Scanner sc = new Scanner(System.in);
  System.out.println("请输入你的年龄:");
  int age = sc.nextInt();
  if (age >= 18) {
      System.out.println("你已成年");
  }
  System.out.println("请输入你的姓名:");
  String name = sc.next();
  System.out.println("姓名是:" + name + " 年龄是:" + age);
  • 1.4.2 nextLine 与 next 混用
  String string = sc.nextLine(); // 读取整行
  System.out.println("nextLine = " + string);
  String next = sc.next();       // 读取单词
  System.out.println("next = " + next);
  • 1.4.3 综合练习——控制台创建数组并赋值:结合 Scanner 与数组动态初始化,循环为每个元素赋值
  Scanner sc = new Scanner(System.in);
  System.out.println("请输入您想创建数组的长度(纯数字)");
  int len = sc.nextInt();
  int[] ints = new int[len];
  for (int i = 0; i < len; i++) {
      System.out.println("请给数组中" + i + "元素赋值");
      ints[i] = sc.nextInt();
  }
  System.out.println(Arrays.toString(ints));
  • 1.4.4 输入校验——hasNextInt() 配合 while 过滤非法输入
  Scanner sc = new Scanner(System.in);
  while (!sc.hasNextInt()) {
      sc.nextLine();
      System.out.println("请输入正确数字");
  }
  int i = sc.nextInt();
  System.out.println("i = " + i);

2. 示例代码

2.1 Demo06(day02)

java

package com.itszt.day02;
 
import java.util.Scanner;
 
public class Demo06 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
 
        // nextLine:读取整行
        String string = sc.nextLine();
        System.out.println("nextLine = " + string);
 
        // next:读取单词,遇空格停止
        String next = sc.next();
        System.out.println("next = " + next);
    }
}

2.2 Demo05(day03)

package com.itszt.day03;
 
import java.util.Arrays;
import java.util.Scanner;
 
public class Demo05 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入您想创建数组的长度(纯数字)");
        int len = sc.nextInt();
        int[] ints = new int[len];
        for (int i = 0; i < len; i++) {
            System.out.println("请给数组中" + i + "元素赋值");
            ints[i] = sc.nextInt();
        }
        System.out.println(Arrays.toString(ints));
    }
}

2.3 Demo06(day03)

package com.itszt.day03;
 
import java.util.Scanner;
 
public class Demo06 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (!sc.hasNextInt()) {
            sc.nextLine();
            System.out.println("请输入正确数字");
        }
        int i = sc.nextInt();
        System.out.println("i = " + i);
    }
}

3. 总结

知识点核心要点
导包import java.util.Scanner;
创建对象Scanner sc = new Scanner(System.in);
next()读取单词,空格截断
nextLine()读取整行,回车截断
nextInt()读取整数
hasNextInt()判断下一个输入是否为整数
输入校验while(!sc.hasNextInt()) 过滤非法输入