Java运行报错Scanner cannot be converted to double如何解决?
错误原因
- 你调用
calculateGrossIncome方法时传入的两个参数hrsPerWeek、hrlyPay都是Scanner类型的对象,而该方法定义要求接收两个double类型的参数,类型不匹配触发了类型转换报错。 - 额外的逻辑问题:你调用了
nextDouble()读取输入,但没有将读取到的数值赋值给变量存储,读取到的输入直接被丢弃了;同时重复创建了两个Scanner对象绑定同一个输入流,属于不必要的资源浪费。
修复方案
- 仅创建1个
Scanner实例复用 - 定义两个
double类型变量,接收nextDouble()返回的输入值 - 调用方法时传入存储了输入值的double类型变量
修复后完整代码如下:
import java.util.Scanner; public class Main{ public static double calculateGrossIncome(double hrsPerWeek, double hrlyPay){ double weeklyPay = hrsPerWeek * hrlyPay; double result = weeklyPay * 52; return result; } public static void main(String[] args) { // 仅创建一个Scanner实例 Scanner sc = new Scanner(System.in); System.out.println("Enter Hourly Pay :"); // 定义double变量存储读取到的时薪 double hrlyPay = sc.nextDouble(); System.out.println("Enter Hours Per week :"); // 定义double变量存储读取到的周工作时长 double hrsPerWeek = sc.nextDouble(); // 传入double类型的数值变量调用方法 double income = calculateGrossIncome(hrsPerWeek, hrlyPay); System.out.println("The employee total gross income is " + income); // 用完关闭Scanner释放资源 sc.close(); } }
内容的提问来源于stack exchange,提问作者Karan Kalugade
相关产品推荐
相关产品推荐

