在 Java 编程中,输入输出、流程控制和数据处理是构建实用程序的基础能力。本文将系统讲解 Scanner 输入、控制流程语句及大数值处理方案,帮助你掌握这些核心编程技能。

一、Java 输入输出:与用户交互的桥梁

Java 提供了丰富的输入输出工具,其中Scanner类是处理用户输入的常用选择。

Scanner 类的核心方法

  • nextInt():读取整数输入
  • nextLine():读取一行字符串(注意与其他方法联用时光标位置问题)
  • nextDouble():读取双精度浮点数
  • next():读取空格分隔的字符串

简易计算器实现示例

通过 Scanner 接收用户输入的运算数和运算符,结合分支语句实现基本运算:

import java.util.Scanner;

public class SimpleCalculator {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        System.out.print("请输入第一个数:");
        double num1 = scanner.nextDouble();
        
        System.out.print("请输入运算符(+,-,*,/):");
        String operator = scanner.next();
        
        System.out.print("请输入第二个数:");
        double num2 = scanner.nextDouble();
        
        double result = 0;
        switch (operator) {
            case "+":
                result = num1 + num2;
                break;
            case "-":
                result = num1 - num2;
                break;
            case "*":
                result = num1 * num2;
                break;
            case "/":
                if (num2 != 0) {
                    result = num1 / num2;
                } else {
                    System.out.println("除数不能为0");
                    return;
                }
                break;
            default:
                System.out.println("运算符错误");
                return;
        }
        System.out.println("结果:" + result);
        scanner.close();
    }
}

二、控制流程:程序的执行路线图

控制流程语句决定了程序的执行顺序,主要包括分支结构和循环结构。

1. 分支语句

  • if 判断:适用于复杂条件判断,支持多重嵌套

    if (score >= 90) {
        System.out.println("优秀");
    } else if (score >= 60) {
        System.out.println("及格");
    } else {
        System.out.println("不及格");
    }
    
  • switch 语句:适用于多值匹配场景(JDK7 + 支持字符串匹配)

    switch (day) {
        case 1:
            System.out.println("星期一");
            break;
        case 2:
            System.out.println("星期二");
            break;
        // 其他case...
        default:
            System.out.println("无效日期");
    }
    

2. 循环语句

  • for 循环:适用于已知循环次数的场景

    for (int i = 0; i < 10; i++) {
        System.out.println(i);
    }
    
  • while 循环:适用于循环次数不确定的场景

    int count = 0;
    while (count < 5) {
        System.out.println("计数:" + count);
        count++;
    }
    

3. 循环控制关键字

  • break:立即终止当前循环(可配合标签跳出多重嵌套循环)
  • continue:跳过本次循环剩余部分,直接进入下一次循环
// 跳出多重循环示例
outer: for (int i = 0; i < 5; i++) {
    for (int j = 0; j < 5; j++) {
        if (i * j > 6) {
            break outer; // 直接跳出外层循环
        }
        System.out.println(i + "," + j);
    }
}

三、大数值处理:高精度运算方案

普通数值类型(如 int、double)存在精度限制和范围约束,Java 提供了BigIntegerBigDecimal类处理高精度计算。

1. 适用场景

  • BigInteger:处理任意长度的整数运算
  • BigDecimal:处理高精度小数运算,尤其适合金融、电商等对精度敏感的领域

2. 金融领域的精度问题

使用 double 进行货币计算可能导致精度丢失:

System.out.println(0.1 + 0.2); // 输出0.30000000000000004而非0.3

改用 BigDecimal 可避免此问题:

import java.math.BigDecimal;

public class FinancialCalculation {
    public static void main(String[] args) {
        BigDecimal a = new BigDecimal("0.1");
        BigDecimal b = new BigDecimal("0.2");
        System.out.println(a.add(b)); // 正确输出0.3
    }
}

3. 核心方法

  • BigIntegeradd()subtract()multiply()divide()
  • BigDecimal:除上述方法外,还需注意设置精度和舍入模式(如setScale(2, RoundingMode.HALF_UP)
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐