java接收键盘输入(三种方法)

本文介绍并演示了三种不同的Java输入输出方法:使用System.in直接读取字符、利用InputStreamReader与BufferedReader读取字符串,以及采用Scanner类进行多功能的数据读取。通过实际案例展示了不同输入方式的特点及适用场景。
import java.io.BufferedReader;  
import java.io.IOException;  
import java.io.InputStreamReader;  
import java.util.Scanner;  
  
public class EnterTest { 
    
  public static void main(String[] args) { //主方法 
    CharTest();  //调用System.in方法 
    ReadTest();  //调用ReadTest方法 
    ScannerTest();//调用ScannerTest方法 
  } 
  /** 
   * System.in和System.out方法 
   * 缺点一: 该方法能获取从键盘输入的字符,但只能针对一个字符的获取 
   * 缺点二: 获取的只是char类型的。如果想获得int,float等类型的输入,比较麻烦。 
   */
  public static void CharTest(){  
    try{ 
      System.out.print("Enter a Char:"); 
      char i = (char)System.in.read(); 
      System.out.println("Yout Enter Char is:" + i); 
    } 
    catch(IOException e){ 
      e.printStackTrace(); 
    } 
      
  } 
  /** 
   * InputStreamReader和BufferedReader方法 
   * 优点: 可以获取键盘输入的字符串 
   * 缺点: 如何要获取的是int,float等类型的仍然需要转换 
   */
  public static void ReadTest(){ 
    System.out.println("ReadTest, Please Enter Data:"); 
    InputStreamReader is = new InputStreamReader(System.in); //new构造InputStreamReader对象 
    BufferedReader br = new BufferedReader(is); //拿构造的方法传到BufferedReader中 
    try{ //该方法中有个IOExcepiton需要捕获 
      String name = br.readLine(); 
      System.out.println("ReadTest Output:" + name); 
    } 
    catch(IOException e){ 
      e.printStackTrace(); 
    } 
      
  } 
  /** 
   * Scanner类中的方法 
   * 优点一: 可以获取键盘输入的字符串 
   * 优点二: 有现成的获取int,float等类型数据,非常强大,也非常方便; 
   */
  public static void ScannerTest(){ 
    Scanner sc = new Scanner(System.in); 
    System.out.println("ScannerTest, Please Enter Name:"); 
    String name = sc.nextLine();  //读取字符串型输入 
    System.out.println("ScannerTest, Please Enter Age:"); 
    int age = sc.nextInt();    //读取整型输入 
    System.out.println("ScannerTest, Please Enter Salary:"); 
    float salary = sc.nextFloat(); //读取float型输入 
    System.out.println("Your Information is as below:"); 
    System.out.println("Name:" + name +"\n" + "Age:"+age + "\n"+"Salary:"+salary); 
  } 
}

### Java接收键盘输入的解决方案 在 Java 中,`Scanner` 类是用于接收键盘输入的一种常用方式。通过导入 `java.util.Scanner` 包,并实例化 `Scanner` 对象,可以轻松地从控制台获取用户输入的数据[^2]。 以下是一个完整的示例代码,展示了如何在 `main` 方法中使用 `Scanner` 接收键盘输入: ```java import java.util.Scanner; public class KeyboardInputExample { public static void main(String[] args) { // 创建 Scanner 对象以接收键盘输入 Scanner scanner = new Scanner(System.in); // 提示用户输入姓名并读取 System.out.println("请输入你的姓名:"); String name = scanner.nextLine(); // 使用 nextLine() 可以接收包含空格的输入 // 提示用户输入年龄并读取 System.out.println("请输入你的年龄:"); int age = scanner.nextInt(); // 跳过可能存在的换行符 scanner.nextLine(); // 提示用户输入体重并读取 System.out.println("请输入你的体重:"); double weight = scanner.nextDouble(); // 再次跳过可能存在的换行符 scanner.nextLine(); // 提示用户输入性别并读取 System.out.println("请输入你的性别(男/女):"); String gender = scanner.nextLine(); // 输出所有接收到的信息 System.out.println("你的姓名是: " + name); System.out.println("你的年龄是: " + age); System.out.println("你的体重是: " + weight); System.out.println("你的性别是: " + gender); // 关闭 Scanner 对象 scanner.close(); } } ``` #### 代码说明 1. **导入 Scanner 类**:通过 `import java.util.Scanner;` 导入 `Scanner` 类。 2. **创建 Scanner 实例**:通过 `Scanner scanner = new Scanner(System.in);` 创建一个 `Scanner` 对象,用于接收来自标准输入流(键盘)的数据。 3. **接收不同类型的数据**: - 使用 `nextLine()` 方法接收字符串类型的输入,包括空格[^1]。 - 使用 `nextInt()` 方法接收整数类型的输入。 - 使用 `nextDouble()` 方法接收浮点数类型的输入。 4. **处理换行符问题**:在调用 `nextInt()` 或 `nextDouble()` 后,需要调用一次 `scanner.nextLine()` 来跳过可能遗留的换行符[^2]。 5. **关闭 Scanner**:通过 `scanner.close();` 关闭 `Scanner` 对象,释放资源。 ### 注意事项 - 如果需要接收包含空格的字符串,建议使用 `nextLine()` 方法,而不要使用 `next()`,因为后者会在遇到空格时停止读取[^1]。 - 在调用 `nextInt()` 或 `nextDouble()` 后,如果紧接着需要调用 `nextLine()`,需要额外插入一个 `scanner.nextLine()` 来清除缓冲区中的换行符。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值