Java程序无语法错误但输出始终为0/0.0,求保留Scanner类的修复方案及原因
程序修复方案与问题原因
问题原因
你的程序输出始终为0/0.0,核心问题是输入值没有被正确传递到计算用的变量中:
- Java类的成员变量如果没显式赋值,会自动赋予默认值:整数类型默认0,浮点类型默认0.0。
- 你在使用
Scanner读取输入时,错误地定义了和成员变量同名的局部变量,输入值只存在于局部变量中,而计算逻辑依赖的是未被赋值的成员变量,自然结果一直是0。
修复后的代码示例
import java.util.Scanner; class AverageCalculator { // 用于存储输入值和计算结果的成员变量 int num1, num2; double average; // 获取用户输入 public void readInput() { Scanner sc = new Scanner(System.in); // 直接将输入值赋值给成员变量,不要重新声明局部变量 System.out.print("输入第一个整数:"); num1 = sc.nextInt(); System.out.print("输入第二个整数:"); num2 = sc.nextInt(); sc.close(); } // 计算平均值 public void calculateAverage() { average = (double) (num1 + num2) / 2; } // 输出结果 public void printResult() { System.out.println("平均值为:" + average); } public static void main(String[] args) { AverageCalculator calc = new AverageCalculator(); calc.readInput(); calc.calculateAverage(); calc.printResult(); } }
修复说明
- 移除了读取输入时的局部变量声明,直接把
Scanner读取的值赋值给类的成员变量num1和num2,确保计算时能用到用户输入的真实值。 - 保留了
Scanner类的使用,满足你的需求。 - 增加了输入提示,让程序交互更清晰(可根据自身需求调整)。
内容的提问来源于stack exchange,提问作者Supratik Dash
相关产品推荐
相关产品推荐

