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

相关推荐

  • JavaWeb项目如何查看主页?

    在JavaWeb项目中查看主页,通常需将项目部署到服务器(如Tomcat),启动后通过浏览器访问默认路径(如http://localhost:8080/项目名/),主页文件一般为index.html、index.jsp或welcome-file-list中配置的文件,需放在webapp目录下,若使用IDE(如Eclipse/IDEA),可通过内置服务器直接运行访问。

    2025年6月20日
    300
  • Java汉字如何表示处理?

    在Java中,汉字通过Unicode编码存储,每个汉字占2个字节(16位),char类型和String类均可直接存储汉字字符,char c = ‘汉’; 或 String s = “汉字”;,Java内部使用UTF-16编码处理字符,支持中文字符的正常操作。

    2025年6月10日
    200
  • java模糊查询sql怎么写

    Java中进行模糊查询,可以使用SQL的LIKE关键字配合通配符%。,“`java,String sql = “SELECT FROM tableName WHERE columnName LIKE ?”;,PreparedStatement pstmt = connection.prepareStatement(sql);,pstmt.setString(1, “%” + searchTerm + “%”);,ResultSet rs = pstmt

    2025年7月11日
    000
  • java标签中颜色怎么赋值

    Java中,可通过JLabel的setForeground()方法设置标签前景色,用setBackground()方法结合setOpaque(true)设置背景色,颜色值可使用Color类预定义常量或RGB自定义

    2025年7月14日
    000
  • java 怎么去掉空格

    在 Java 中,可用 String.replaceAll(“\\s+”, “”) 去除字符串中的所有空格(包括连续多个),\\s+

    2025年8月6日
    000

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN