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

Java运行报错Scanner cannot be converted to double如何解决?

错误原因
  • 你调用calculateGrossIncome方法时传入的两个参数hrsPerWeek、hrlyPay都是Scanner类型的对象,而该方法定义要求接收两个double类型的参数,类型不匹配触发了类型转换报错。
  • 额外的逻辑问题:你调用了nextDouble()读取输入,但没有将读取到的数值赋值给变量存储,读取到的输入直接被丢弃了;同时重复创建了两个Scanner对象绑定同一个输入流,属于不必要的资源浪费。
修复方案
  1. 仅创建1个Scanner实例复用
  2. 定义两个double类型变量,接收nextDouble()返回的输入值
  3. 调用方法时传入存储了输入值的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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 03:15:10