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

Java整数除法计算事件参与占比结果为0的问题排查

问题根源
  • 核心逻辑错误:Java中两个int类型数值执行除法时,会默认做整数截断运算,直接丢弃小数部分只保留整数商。你当前的计算逻辑是events/63 * 100,运算顺序从左到右,只要参与活动数events小于63,events/63的结果就会被截断为0,0乘100自然始终输出0。
  • 附带语法错误:
    1. 首行打印字符串括号不匹配,开头用[,结尾错写为},应该用]闭合
    2. events<7的分支中打印语句字符串未闭合、代码未写完,会直接导致编译失败
修正方案
  1. 调整百分比计算逻辑:要么调整运算顺序先做乘法再做除法(本场景下总活动数固定为63,events*100最大为6300,远小于int类型上限,不会出现溢出问题),要么将运算数转为浮点类型计算后再按需取整,避免整数除法截断。
  2. 补全所有语法错误,闭合字符串、补全缺失的代码内容。

修正后的可运行代码示例:

public class SBLRewards {
    public static void main(String[] args) {
        java.util.Scanner sc = new java.util.Scanner(System.in);
        // 修正括号匹配问题
        System.out.println("[Scrappy's Bucket List Rewards]");
        System.out.print("How many events have you attended?");

        int events;
        events = sc.nextInt();
        // 修正计算顺序,避免整数除法提前截断
        int percentEvents = events * 100 / 63;

        if(events<7)
        {
            // 补全未写完的打印语句
            System.out.print("Check out events at the campus event portal to earn more rewards!");
        } else if (events < 16)
        {
            System.out.println("You've been to " + percentEvents + "% of all SBL events!");
            System.out.println("You've earned a Drawstring bag!");
            System.out.print(percentEvents);
        }
        sc.close();
    }
}

如果需要保留百分比的小数位,可以把percentEvents定义为double类型,计算写法改为double percentEvents = events * 100.0 / 63;即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 06:51:21