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
相关产品推荐
相关产品推荐

