You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中如何用Scanner实现选择图形并计算面积的功能?

解决Scanner分支判断问题,实现多图形面积计算

你的问题核心是没有根据用户选择的图形类型做分支逻辑判断,导致代码始终执行矩形的计算流程。下面是完整的实现思路和代码示例:

实现步骤

  • 先打印图形选择菜单,引导用户输入对应选项
  • 通过Scanner接收用户的选择值,用switch或if-else做分支判断
  • 不同分支下,接收对应图形的参数(比如矩形要长和宽,圆形要半径,正方形要边长)
  • 调用对应图形类的setter设置参数,执行calculateArea()计算并输出结果
  • 最后关闭Scanner资源

完整代码示例

假设你已经有以下图形类(仅核心方法示意):

// 矩形类
class Rectangle {
    private double length;
    private double width;

    public void setLength(double length) { this.length = length; }
    public void setWidth(double width) { this.width = width; }
    public double calculateArea() { return length * width; }
}

// 圆形类
class Circle {
    private double radius;
    private static final double PI = Math.PI;

    public void setRadius(double radius) { this.radius = radius; }
    public double calculateArea() { return PI * radius * radius; }
}

// 正方形类
class Square {
    private double side;

    public void setSide(double side) { this.side = side; }
    public double calculateArea() { return side * side; }
}

主程序的Scanner逻辑实现:

import java.util.Scanner;

public class AreaCalculator {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // 打印选择菜单
        System.out.println("请选择要计算面积的图形:");
        System.out.println("1. 矩形");
        System.out.println("2. 圆形");
        System.out.println("3. 正方形");
        System.out.print("输入选项编号:");

        // 接收用户选择
        int choice = scanner.nextInt();

        // 根据选择执行对应逻辑
        switch (choice) {
            case 1:
                // 矩形逻辑
                System.out.print("输入矩形的长:");
                double length = scanner.nextDouble();
                System.out.print("输入矩形的宽:");
                double width = scanner.nextDouble();
                Rectangle rect = new Rectangle();
                rect.setLength(length);
                rect.setWidth(width);
                System.out.printf("矩形面积:%.2f%n", rect.calculateArea());
                break;
            case 2:
                // 圆形逻辑
                System.out.print("输入圆形的半径:");
                double radius = scanner.nextDouble();
                Circle circle = new Circle();
                circle.setRadius(radius);
                System.out.printf("圆形面积:%.2f%n", circle.calculateArea());
                break;
            case 3:
                // 正方形逻辑
                System.out.print("输入正方形的边长:");
                double side = scanner.nextDouble();
                Square square = new Square();
                square.setSide(side);
                System.out.printf("正方形面积:%.2f%n", square.calculateArea());
                break;
            default:
                System.out.println("无效的选项,请重新运行程序选择正确编号");
        }

        // 关闭Scanner
        scanner.close();
    }
}

关键注意点

  • 必须用分支语句(switch或if-else)区分不同图形的逻辑,这是你之前代码缺失的核心部分
  • 每次接收参数后要对应实例化图形类,调用setter后再计算面积
  • 可以添加输入验证(比如判断输入的参数是否为正数),避免非法值导致计算错误

内容的提问来源于stack exchange,提问作者Alpay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 20:42:02