如何在Java中相加两个数字?
- 后端开发
- 2025-06-06
- 7
基础整数相加
适用于固定数值的简单计算:
public class BasicAddition { public static void main(String[] args) { int num1 = 15; // 定义第一个整数 int num2 = 27; // 定义第二个整数 int sum = num1 + num2; // 相加 System.out.println("结果:" + sum); // 输出:42 } }
关键点:
- int 类型最大支持 2147483647,超出会导致溢出(如 2147483647 + 1 = -2147483648)
- 需更高范围时用 long(最大 9223372036854775807)
用户输入交互相加
通过 Scanner 实现动态输入:
import java.util.Scanner; // 导入输入工具 public class UserInputAddition { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); // 创建扫描器对象 System.out.print("输入第一个数:"); double firstNum = scanner.nextDouble(); // 读取浮点数 System.out.print("输入第二个数:"); double secondNum = scanner.nextDouble(); double result = firstNum + secondNum; System.out.printf("和 = %.2f", result); // 保留两位小数输出 scanner.close(); // 释放资源 } }
执行示例:
输入第一个数:3.5 输入第二个数:7.2 和 = 10.70
浮点数精确计算
解决 float/double 精度丢失问题(如 1 + 0.2 ≠ 0.3):

import java.math.BigDecimal; public class PreciseAddition { public static void main(String[] args) { BigDecimal a = new BigDecimal("0.1"); BigDecimal b = new BigDecimal("0.2"); BigDecimal sum = a.add(b); // 精确加法 System.out.println(sum); // 输出 0.3 } }
为什么用 BigDecimal:
- double 采用二进制浮点运算,存在舍入误差
- 金额、科学计算等场景必须使用 BigDecimal
方法封装复用
将加法逻辑提取为独立方法:

public class MethodAddition { public static void main(String[] args) { System.out.println("整数相加:" + add(5, 8)); // 调用整数方法 System.out.println("浮点数相加:" + add(3.7, 2.4)); // 调用浮点方法 } // 重载方法:整数版本 public static int add(int a, int b) { return a + b; } // 重载方法:双精度版本 public static double add(double a, double b) { return a + b; } }
优势:
- 通过方法重载(Overloading)支持多数据类型
- 避免代码重复,提升可维护性
常见问题及解决方案
| 问题类型 | 原因 | 解决方案 |
|---|---|---|
| 整数溢出 | 超出 int/long 范围 | 使用 BigInteger 类 |
| 精度丢失 | double 计算误差 | 换用 BigDecimal |
| 输入类型错误 | 用户输入非数字 | try-catch 捕获异常 |
| 资源未释放 | 未关闭 Scanner | 调用 scanner.close() |
最佳实践总结
- 明确数据类型:根据需求选择 int, double, 或精确计算类
- 异常处理:用户输入时添加验证逻辑 try { int num = scanner.nextInt(); } catch (InputMismatchException e) { System.out.println("请输入数字!"); }
- 大数处理:
- 超长整数:BigInteger num = new BigInteger("12345678901234567890")
- 高精度小数:BigDecimal(如前文所示)
- 代码健壮性:始终关闭资源(I/O流、数据库连接等)
Java的加法操作看似简单,但结合数据类型、异常处理、对象封装等特性,能构建出严谨的工业级应用,建议通过IDE(如IntelliJ IDEA或Eclipse)实践调试,加深理解。
引用说明:本文代码基于Oracle官方Java 17规范,部分优化方案参考《Effective Java》[1],BigDecimal的使用遵循IEEE 754标准[2]。
[1] Bloch, J. (2018). Effective Java (3rd ed.). Addison-Wesley.
[2] IEEE Computer Society. (2019). IEEE Standard for Floating-Point Arithmetic. IEEE Std 754-2019.
