Java如何获取输入数字

Java中获取输入的数字通常使用Scanner类,导入java.util.Scanner后创建对象,调用nextInt()、nextDouble()等方法读取对应类型数值,也可用BufferedReader结合Integer.parseInt()转换实现。

使用 Scanner 类(推荐初学者)

Scannerjava.util 包中的工具类,提供简单的文本解析功能,适合基础输入操作。

Java如何获取输入数字

完整示例代码

import java.util.Scanner;
public class ScannerExample {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in); // 创建Scanner对象
        System.out.print("请输入整数:");
        int numberInt = scanner.nextInt(); // 直接读取整数
        System.out.print("请输入小数:");
        double numberDouble = scanner.nextDouble(); // 直接读取小数
        System.out.println("整数:" + numberInt);
        System.out.println("小数:" + numberDouble);
        scanner.close(); // 关闭资源防止内存泄漏
    }
}

关键注意事项

  1. 输入验证
    使用 hasNextInt()hasNextDouble() 避免无效输入导致的崩溃:

    System.out.print("请输入整数:");
    while (!scanner.hasNextInt()) {
        System.out.println("错误!请重新输入整数:");
        scanner.next(); // 清除错误输入
    }
    int safeNumber = scanner.nextInt();
  2. 资源释放
    务必调用 scanner.close() 释放系统资源(如从文件读取时)。

  3. 数据类型匹配

    Java如何获取输入数字

    • nextInt() → 整数
    • nextDouble() → 双精度小数
    • nextFloat() → 单精度小数

使用 BufferedReader + InputStreamReader(高性能场景)

适用于需要高效读取大量输入的场景(如文件/网络流),需手动转换数据类型。

完整示例代码

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class BufferedReaderExample {
    public static void main(String[] args) {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        try {
            System.out.print("请输入整数:");
            int numberInt = Integer.parseInt(reader.readLine()); // 字符串转整数
            System.out.print("请输入小数:");
            double numberDouble = Double.parseDouble(reader.readLine()); // 字符串转小数
            System.out.println("整数:" + numberInt);
            System.out.println("小数:" + numberDouble);
        } catch (IOException e) {
            System.err.println("输入输出错误:" + e.getMessage());
        } catch (NumberFormatException e) {
            System.err.println("格式错误:必须输入数字!");
        } finally {
            try {
                reader.close(); // 确保资源关闭
            } catch (IOException e) {
                System.err.println("关闭资源失败:" + e.getMessage());
            }
        }
    }
}

关键优势与风险控制

  1. 异常处理

    • IOException:处理输入流错误
    • NumberFormatException:捕获非数字输入
  2. 性能优势
    BufferedReader 的缓冲机制减少I/O操作次数,适合高频输入场景。

    Java如何获取输入数字

  3. 灵活转换
    通过 Integer.parseInt()Double.parseDouble() 自由转换类型。


方法对比与选型建议

特性 Scanner BufferedReader
易用性 ⭐⭐⭐⭐ (直接解析数字) ⭐⭐ (需手动转换)
性能 ⭐⭐ (小型输入) ⭐⭐⭐⭐ (缓冲优化)
异常控制 ⭐⭐ (需配合 hasNextXxx 验证) ⭐⭐⭐ (明确捕获异常)
适用场景 控制台交互、简单应用 文件/网络流、高频输入

最佳实践总结

  1. 优先选择 Scanner
    适合大多数控制台程序,简化数字解析流程。
  2. 严格验证输入
    使用 hasNextInt()try-catch 避免非法输入崩溃。
  3. 资源必须关闭
    finally 块或 try-with-resources 中关闭流:

    try (Scanner scanner = new Scanner(System.in)) { // Java 7+ 自动关闭
        // 操作代码
    }
  4. 明确数据类型
    整数用 int/long,小数用 float/double,避免精度损失。

引用说明:本文代码示例基于 Oracle 官方 Java 17 文档,遵循 Java 标准库规范,异常处理逻辑参考《Effective Java》第 3 版条目 72(妥善处理异常)。

原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/19686.html

(0)
酷盾叔的头像酷盾叔
上一篇 2025年6月11日 15:11
下一篇 2025年6月11日 15:21

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN