Java如何读取用户输入的数字?

在Java中输入数字通常使用Scanner类,首先导入java.util.Scanner,创建Scanner对象关联System.in,然后调用nextInt()、nextDouble()等方法读取对应类型数值,最后关闭Scanner避免资源泄露。

使用 Scanner 类(推荐初学者)

Scannerjava.util 包中的工具类,适合简单输入操作。

Java如何读取用户输入的数字?

示例代码:读取整数和浮点数

import java.util.Scanner;
import java.util.InputMismatchException;
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        try {
            System.out.print("输入整数: ");
            int numInt = scanner.nextInt(); // 读取整数
            System.out.print("输入浮点数: ");
            double numDouble = scanner.nextDouble(); // 读取浮点数
            System.out.println("整数: " + numInt);
            System.out.println("浮点数: " + numDouble);
        } catch (InputMismatchException e) {
            System.err.println("错误:输入类型不匹配!");
        } finally {
            scanner.close(); // 关闭资源
        }
    }
}

关键点:

  1. nextInt()nextDouble() 分别读取整数和浮点数。
  2. 异常处理:输入非数字时抛出 InputMismatchException
  3. 资源释放:使用 finally 块关闭 Scanner

使用 BufferedReader(高性能场景)

BufferedReader 位于 java.io 包,适合大量数据输入,需手动转换类型。

Java如何读取用户输入的数字?

示例代码:读取整数

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
    public static void main(String[] args) {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        try {
            System.out.print("输入整数: ");
            String input = reader.readLine(); // 读取字符串
            int num = Integer.parseInt(input); // 转为整数
            System.out.println("整数: " + num);
        } catch (IOException e) {
            System.err.println("IO错误: " + e.getMessage());
        } catch (NumberFormatException e) {
            System.err.println("错误:输入的不是有效整数!");
        } finally {
            try {
                reader.close(); // 关闭资源
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

关键点:

  1. readLine() 读取整行文本。
  2. 类型转换Integer.parseInt()Double.parseDouble() 将字符串转为数字。
  3. 异常处理
    • IOException:输入流错误。
    • NumberFormatException:转换失败(如输入字母)。

输入验证与循环重试

确保用户输入有效数字,避免程序崩溃。

Java如何读取用户输入的数字?

示例:循环直到输入正确

Scanner scanner = new Scanner(System.in);
int num = 0;
boolean valid = false;
while (!valid) {
    System.out.print("请输入整数: ");
    try {
        num = scanner.nextInt();
        valid = true; // 输入正确时退出循环
    } catch (InputMismatchException e) {
        System.err.println("错误!请重新输入。");
        scanner.nextLine(); // 清除错误输入
    }
}
System.out.println("输入成功: " + num);
scanner.close();

Scanner vs BufferedReader 对比

特性 Scanner BufferedReader
易用性 ⭐⭐⭐⭐(方法直接) ⭐⭐(需手动转换)
性能 ⭐⭐(较慢) ⭐⭐⭐⭐(高效缓冲)
异常处理 仅需处理 InputMismatchException 需处理 IOExceptionNumberFormatException
适用场景 简单输入、学习阶段 文件读取、大数据流处理

注意事项

  1. 资源泄漏:务必关闭 ScannerBufferedReader(用 try-with-resources 更安全)。
  2. 输入缓存:混合使用 nextLine()nextInt() 时,用 scanner.nextLine() 清除换行符。
  3. 数值范围:大整数用 nextLong(),避免溢出。
  4. 国际化:浮点数输入需注意小数点格式(如 5 英文 vs 1,5 欧洲)。

最佳实践总结

  • 初学者:用 Scanner,简洁易上手。
  • 生产环境:优先选 BufferedReader(尤其文件/网络输入)。
  • 健壮性:始终添加异常处理和输入验证循环。

引用说明:本文代码基于 Oracle 官方 Java 17 文档,遵循 Java 编码规范,异常处理逻辑参考《Effective Java》第3版(Joshua Bloch)。

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

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

相关推荐

  • Java如何访问服务器图片路径

    在Java中访问服务器图片路径,可通过绝对路径(如”D:/images/xxx.jpg”)或Web应用相对路径(结合ServletContext.getRealPath()),推荐使用类加载器读取资源文件,或配置虚拟路径映射确保安全访问,避免硬编码,优先从配置文件读取路径。

    2025年6月7日
    100
  • Java JDK如何更新

    访问Oracle官网下载最新JDK安装包,运行安装程序覆盖旧版本,或通过包管理器(如apt/yum)更新,安装后需配置环境变量指向新路径,终端执行java -version验证更新是否成功,注意卸载旧版本避免冲突。

    2025年6月15日
    100
  • Java圆周率怎么获取

    在Java中获取圆周率π的值,可以通过Math.PI常量来获取,这个常量是double类型的,精度约为15位小数。

    2025年6月21日
    300
  • Java实现图片插入方法

    在Java中插入图片可通过多种方式实现:Swing组件如JLabel使用ImageIcon加载本地或网络图片;JavaFX通过ImageView显示图像;AWT的Graphics.drawImage()支持在画布绘制;处理PDF可使用iText库添加图片,核心步骤包括加载图像资源、创建图像对象并集成到界面组件中。

    2025年6月21日
    100
  • 如何判断Java中的空值?

    在Java中判断空值主要分几种情况:对象引用用obj == null;字符串用str == null || str.isEmpty()(注意空串);集合类用collection == null || collection.isEmpty(),Java 8+推荐Objects.isNull(obj),第三方库如Apache Commons提供StringUtils.isEmpty()等工具方法,注意避免直接对null对象操作引发空指针异常。

    2025年6月16日
    100

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN