输入

Java 中,没有直接输入 char 类型的变量,但是可以输入字符串,然后将字符串转化为 char

next()nextLine() 的区别

这两个都可以输入字符串,但是前者不接收空格和回车(遇到回车和空格时会终止接收),后者会接收空格和回车等(前一次输入对这一次输入会有影响)。

public static void main (String[] args) {
    Scanner scanner = new Scanner(System.in);
    System.out.print("请输入年龄 > ");
    int age = scanner.nextInt();
    System.out.print("请输入姓名 > ");
    String name = scanner.nextLine(); // b 其实是上一次输入的回车。所以,代码执行到这里时,会直接结束了,而不会等用户输入。
    // System.out.print("请输入姓名 > ");
    // String name = scanner.next(); // 不会接收回车,所以可以输入姓名
    
    /* ------------------ */
    // next() 遇到空格或者回车会停止录入
    String str1 = scanner.next(); // 输入 12 3 4 5 6
    System.out.println(str1); // 12
    // 会自动接收上一次的空格或回车,还未等用户输入,str2 就已经有值了
    String str2 = scanner.nextLine();
    System.out.println(str2); // " 3 4 5 6"
}
public static void main (String[] args) {
    Scanner s = new Scanner(System.in);
    System.out.println("请输入姓名(请带空格和字母)"); // 输入 mm  nn
    String c = s.next();
    System.out.println("请输入年龄");
    int a = s.nextInt(); // 报错 InputMismactchException
    
    // 但是,如果姓名后面跟着的是数字,则程序不会报错。例如姓名输入的是 "mm 1", 则 a 就是 1
}

判断输入的是否是数字(也可以判断其它类型)

Scanner s = new Scanner(System.in);
if (s.hasnextInt()) {
    // 如果是整数, 则接收该数
    int a = s.nextInt();
} else {
    // ...
}