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

Java圆计算程序报错求助:输入整数半径求直径、周长及面积

问题分析与解决方案:圆计算程序报错处理

我来帮你拆解这两个编译错误,同时满足你提出的自定义π值和保留3位小数输出的需求:

报错信息回顾

Unit2Circle.java:26: error: variable radius is already defined in method main(String[])
int radius = input.nextDouble();
^
Unit2Circle.java:26: error: incompatible types: possible lossy conversion from double to int
int radius = input.nextDouble();

错误原因解析

  • 变量重复定义:你在代码开头已经声明了double radius,后面又重新定义了int radius——Java不允许在同一个方法作用域内重复定义同名变量,这会导致编译器混淆。
  • 类型不兼容:input.nextDouble()方法返回的是double类型的数值,但你试图把它赋值给int类型变量。整数类型无法直接容纳带小数的浮点数,Java默认禁止这种可能丢失精度的隐式转换,所以触发报错。

修正后的完整代码

import java.util.Scanner;

public class Unit2Circle{ 
    public static void main(String[] args){ 
        // 创建Scanner对象用于读取输入
        Scanner input = new Scanner(System.in); 

        // 声明所有需要的变量,统一使用double类型避免类型冲突
        double radius, diameter; 
        double circumference, area;
        // 自定义π的浮点值,用final修饰表示常量
        final double PI = 3.14159;

        // 提示用户输入半径
        System.out.println("Please enter an integer: "); 
        // 直接赋值给已声明的radius变量,无需重新定义
        radius = input.nextDouble(); 

        // 计算各项参数
        diameter = 2 * radius; 
        circumference = 2 * PI * radius; 
        area = PI * radius * radius; 

        // 格式化输出,保留3位小数
        System.out.println("The diameter is " + String.format("%.3f", diameter));
        System.out.println("The circumference is " + String.format("%.3f", circumference));
        System.out.println("The area is " + String.format("%.3f", area)); 

        // 关闭Scanner资源(可选但推荐)
        input.close();
    } 
}

关键修改说明

  • 移除了重复定义的int radius,直接使用之前声明的double类型变量接收输入,一次性解决两个编译错误。
  • 新增了常量PI = 3.14159替代系统的Math.PI,满足你指定π值的要求。
  • 使用String.format("%.3f", 变量)格式化输出结果,确保所有数值保留3位小数。
  • 额外添加了input.close()来关闭输入流,养成良好的资源管理习惯。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:34:38