1. 获取单字符输入—System.in

注意:System.in 只能接收单个字符,并且输出字符的 ASCLL 值。如果需要输出字符,需要进行强制类型转换。

接收一个数字

public static void scaneNum(){
    int scane = 0;
    System.out.print("请输入数据:");
    try {
        scane = System.in.read();
    } catch (Exception e) {
        e.printStackTrace();
    }
    System.out.println("输入的数据为:" + scane);
}
 

运行结果:只接收第一个数字

接收一个字符

public static void scaneChar(){
    char scane = '0';
    System.out.print("请输入数据:");
    try {
        scane = (char)System.in.read();
    } catch (Exception e) {
        e.printStackTrace();
    }
    System.out.println("输入的数据为:" + scane);
}
 

运行结果:只接收第一个字符

package testScane;
 
public class test {
    public static void main(String[] args) {
        //scaneNum();
        scaneChar();
    }
 
    public static void scaneNum(){
        int scane = 0;
        System.out.print("请输入数据:");
        try {
            scane = System.in.read();
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println("输入的数据为:" + scane);
    }
 
    public static void scaneChar(){
        char scane = '0';
        System.out.print("请输入数据:");
        try {
            scane = (char)System.in.read();
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println("输入的数据为:" + scane);
    }
}
 

2. 获取一行字符串输入:Scanner

注意:在使用 Scanner 时候,需要导入 util 中的 Scanner 包。
① next() 方法用以获得用户输入的字符串
② nextInt() 将取得的输入字符串转换为整数类型
③ nextFloat() 转换成浮点型(默认保留两位小数)
④ nextBoolean() 转换为布尔型

package testScane;
 
import java.util.Scanner;
 
public class test1 {
    public static void main(String[] args) {
        scane();
        scaneInt();
        scaneFloat();
        scaneBool();
    }
 
    public static void scane() {
        System.out.print("请输入数据:");
        Scanner scan = new Scanner(System.in);
        String read = scan.nextLine();
        System.out.println("输入的数据为:" + read);
    }
 
    public static void scaneInt() {
        System.out.print("请输入整形数据:");
        Scanner scan = new Scanner(System.in);
        int scanInt = scan.nextInt();
        System.out.println("输入的数据为:" + scanInt);
    }
 
    public static void scaneFloat() {
        System.out.print("请输入浮点型数据:");
        Scanner scan = new Scanner(System.in);
        float scanFloat = scan.nextFloat();
        System.out.println("输入的数据为:" + scanFloat);
    }
 
    public static void scaneBool() {
        System.out.print("请输入数据:");
        Scanner scan = new Scanner(System.in);
        boolean scanBoolean = scan.nextBoolean();
        System.out.println("输入的数据为:" + scanBoolean);
    }
}
 

运行结果:

注意:next() 和 nextLine() 的区别

  • next() 方法不接收空格,在接收到有效数据之前,所有的空格、tab 键等输入都会被忽略掉。而在接收到第一个有效数据后,如果按下空格或 tab,之后任何输入都无效,直到按到回车退出。
  • nextLine() 可以接收空格或者 tab 键,其输入以 enter 键结束。
package testScane;
 
import java.util.Scanner;
 
public class test4 {
    public static void main(String[] args) {
        scan1();
        scan2();
    }
 
    public static void scan1(){
        Scanner scan = new Scanner(System.in);
        String str = scan.next();
        System.out.println(str);
    }
 
    public static void scan2(){
        Scanner scan = new Scanner(System.in);
        String str = scan.nextLine();
        System.out.println(str);
    }
}
 

运行结果:

3. 获取一行字符串输入:BufferedReader

package testScane;
 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
public class test3 {
    public static void main(String[] args) throws IOException {
        scane();
    }
 
    public static void scane() throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String scane = null;
        System.out.print("输入数据:");
        scane = br.readLine();
        System.out.println("您输入的数据为:" + scane);
    }
}
 

运行结果: