当前位置:首页 > 后端开发 > 正文

Java如何输入整数?

在Java中录入整数通常使用Scanner类,首先导入java.util.Scanner,创建Scanner对象关联System.in,再调用nextInt()方法读取用户输入的整数值,Scanner sc = new Scanner(System.in); int num = sc.nextInt();

在Java中录入整数是基础操作,常用ScannerBufferedReader两类方法,以下是详细实现方案:


使用Scanner类(推荐初学者)

步骤:

  1. 导入java.util.Scanner
  2. 创建Scanner对象关联标准输入流
  3. 调用nextInt()读取整数
  4. 关闭资源(Java 7+可用try-with-resources自动关闭)
import java.util.Scanner;
public class ReadInteger {
    public static void main(String[] args) {
        // 创建Scanner对象
        try (Scanner sc = new Scanner(System.in)) {
            System.out.print("请输入整数: ");
            int num = sc.nextInt();  // 读取整数
            System.out.println("您输入的整数是: " + num);
        } catch (Exception e) {
            System.out.println("输入错误!请确保输入的是整数");
        }
    }
}

关键点:

Java如何输入整数?  第1张

  • nextInt()遇到非数字会抛出InputMismatchException
  • try-with-resources自动关闭资源,避免内存泄漏
  • 需处理非整数输入(通过catch捕获异常)

使用BufferedReader类(高性能场景)

适用场景:大文件读取或需更高性能时
步骤:

  1. 导入java.io.BufferedReaderjava.io.InputStreamReader
  2. 用BufferedReader包装System.in
  3. readLine()读取整行文本
  4. Integer.parseInt()转换字符串为整数
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class ReadIntegerBuffered {
    public static void main(String[] args) {
        try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) {
            System.out.print("请输入整数: ");
            String input = reader.readLine();  // 读取文本行
            int num = Integer.parseInt(input); // 字符串转整数
            System.out.println("您输入的整数是: " + num);
        } catch (NumberFormatException e) {
            System.out.println("错误:输入内容不是有效整数");
        } catch (Exception e) {
            System.out.println("发生未知错误: " + e.getMessage());
        }
    }
}

关键点:

  • Integer.parseInt()遇到非数字会抛NumberFormatException
  • 需显式处理IOException(如文件读取错误)

两种方法对比

方法 优点 缺点 适用场景
Scanner 代码简洁,自带类型转换 性能较低,异常处理复杂 简单控制台输入
BufferedReader 性能高(尤其多次读取),节省系统资源 需手动转换类型,代码稍冗长 大数据量或高频读取场景

注意事项

  1. 异常处理必须完善

    • try-catch捕获InputMismatchException(Scanner)或NumberFormatException(BufferedReader)
    • 避免程序因非规输入崩溃
  2. 资源关闭

    • 使用try-with-resources(如try (Scanner sc = ...))确保自动关闭
    • 手动调用close()可能遗漏(不推荐)
  3. 输入验证扩展

    • 若需循环输入直到合法:
      while (true) {
        try {
            System.out.print("请重新输入: ");
            int num = sc.nextInt();
            break;  // 合法则退出循环
        } catch (InputMismatchException e) {
            sc.nextLine(); // 清空错误输入
            System.out.println("无效输入!");
        }
      }

  • 初学者首选Scanner:语法简单,适合基础输入
  • 高性能选BufferedReader:处理大量数据时效率更高
  • 始终添加异常处理:保障程序健壮性

引用说明:本文代码示例基于Oracle官方Java文档标准编写,遵循Java SE 17规范,Scanner和BufferedReader的用法参考《Java核心技术卷I》第3章I/O流处理。

0