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

Java编程新手求助:如何设置奖金金额上限(最高300美元)

解决Java奖金上限控制问题

嘿,作为Java初学者碰到这种边界值控制的问题太正常啦,我来帮你把这个奖金上限功能搞定!

首先咱们先理清楚核心需求:根据公式 prize = (60 - mins4)*10/2 计算奖金,但最终奖金绝对不能超过300美元。其实核心就是在计算出原始奖金后,做一个上限截断,或者也可以在计算逻辑里直接考虑上限,两种方式都能实现,我给你分别说明:

方法一:用if-else语句实现(匹配你当前的代码结构)

既然你已经在使用if-else if语句,那可以先算出原始奖金,再判断是否超出上限:

// 先根据公式计算未做限制的原始奖金
double rawPrize = (60 - mins4) * 10.0 / 2;
double finalPrize;

// 判断是否超过300美元上限
if (rawPrize > 300) {
    finalPrize = 300;
} else {
    // 额外加个判断:防止mins4大于60时出现负数奖金(如果业务允许负数可省略)
    finalPrize = Math.max(rawPrize, 0);
}

// 输出或使用最终奖金
System.out.println("最终奖金:" + finalPrize + "美元");

简单解释下:

  • 先算出未做限制的rawPrize,如果它超过300,就把最终奖金强制设为300;
  • 额外加的Math.max(rawPrize, 0)是为了处理mins4大于60的异常情况(比如参赛者耗时超过60分钟),避免出现负数奖金,要是你的业务里mins4不可能超过60,这一步可以直接去掉。

方法二:用Math.min()简化代码

如果你想让代码更紧凑,Java的Math.min()方法可以直接帮你取两个数里的较小值,一步到位实现上限控制:

double rawPrize = (60 - mins4) * 10.0 / 2;
// 同时实现上限300、下限0的控制
double finalPrize = Math.max(Math.min(rawPrize, 300), 0);

这种写法和上面的if-else逻辑完全一致,只是更简洁,适合不想写太多分支判断的场景。

验证边界情况

  • 当mins4 = 0时:(60-0)*10/2 = 300,刚好触达上限,最终奖金就是300美元;
  • 当mins4 = 20时:(60-20)*10/2 = 200,低于上限,最终奖金就是200美元;
  • 当mins4 = -10(假设存在异常输入):(60 - (-10))*10/2 = 350,超过上限,最终奖金被截断为300美元。

这样就能完美满足你“没有参赛者能获得超过300美元奖金”的需求啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:30:15