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

Java打击率计算方法输出异常求助:结果始终为0.0

解决打击率计算始终返回0.0的问题

嘿,我看到你的问题了——计算打击率一直返回0.0确实让人头疼,咱们来一步步排查问题:

问题1:构造方法遗漏doubles参数

你的BaseballPlayer构造方法里没有包含doubles(二垒打)参数,导致类中的doubles成员变量一直是默认值0。这不仅会让安打数计算不准确,还会间接影响最终的打击率结果。

问题2:整数除法导致小数截断

Java中,两个int类型的数值相除会执行整数除法,结果只保留整数部分。比如你的示例中,安打总数是12+0+13+4=29,打数是84,29/84用整数除法计算结果是0,再赋值给double类型的变量自然就变成了0.0。


修复方案

步骤1:修正构造方法

给构造方法添加doubles参数,并初始化成员变量:

//BaseballPlayer构造方法
public BaseballPlayer(String name, int number, int singles, int doubles, int triples, int homeRuns, int atBats, int walks, int sacrificeFlies) {
    this.name = name;
    this.number = number;
    this.singles = singles;
    this.doubles = doubles; // 新增二垒打成员变量初始化
    this.triples = triples;
    this.homeRuns = homeRuns;
    this.atBats = atBats;
    this.walks = walks;
    this.sacrificeFlies = sacrificeFlies;
}

步骤2:修改打击率计算方法,使用浮点数除法

将安打总数或打数转换为double类型,让除法运算保留小数部分:

// 打击率计算方法
public double getBattingAverage() {
    // 将安打总数转为double,触发浮点数除法
    double totalHits = singles + doubles + triples + homeRuns;
    double average = totalHits / atBats;
    return average;
}
// 也可以用更简洁的写法:
// return (double)(singles+doubles+triples+homeRuns) / atBats;

步骤3:修正主类的构造方法调用

现在构造方法多了doubles参数,调用时需要补上对应的数值(这里假设你漏传了,示例中暂填5,你可以根据实际数据调整):

BaseballPlayer player01 = new BaseballPlayer("Mr. Business",13,12,5,13,4,84,63,7);
System.out.println(player01.getBattingAverage());

这样修改后,你的代码就能正确计算出打击率了。比如示例中的安打总数是12+5+13+4=34,打数是84,计算结果就是34/84≈0.4048,完全符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:05:15