Java中按100阈值拆分整数并计算的简洁方法?新手求助
简洁实现整数分段计算的几种Java方法
嘿,作为Java初学者,这个分段计算的需求其实有不少简洁的实现方式,咱们一步步来看:
首先先明确你的核心逻辑:
对于输入整数n:
- 若n ≤ 100,结果为
n * 5- 若n > 100,结果为
100*5 + (n-100)*2
下面是几种实用且简洁的写法,从易理解到更优雅的方向排列:
1. 基础条件判断(最适合新手理解)
这是最直观的分支写法,逻辑清晰,新手一眼就能看懂:
public static int calculate(int num) { if (num <= 100) { return num * 5; } else { return 500 + (num - 100) * 2; } }
2. 一行式工具函数写法(优雅无分支)
利用Java自带的Math.min和Math.max,可以把逻辑压缩到一行,完全不需要分支判断:
public static int calculate(int num) { return Math.min(num, 100) * 5 + Math.max(num - 100, 0) * 2; }
这里的思路很巧妙:
Math.min(num, 100)自动获取100及以内的部分,乘以5Math.max(num - 100, 0)自动提取超过100的部分(没超过就返回0),乘以2- 两者相加就是最终结果
3. 简化数学公式写法(高效又简洁)
我们可以把超过100的情况做代数化简:100*5 + (num-100)*2 = 500 + 2num - 200 = 2num + 300
结合三元运算符,就能写出更高效的一行代码:
public static int calculate(int num) { return num <= 100 ? num * 5 : 2 * num + 300; }
小验证环节
你可以用你的测试用例跑一下这些方法:
- 输入25 → 25*5=125
- 输入100 → 100*5=500
- 输入125 → 2*125+300=550
- 输入150 → 2*150+300=600
结果完全符合你的预期~
内容的提问来源于stack exchange,提问作者Jon Williams
相关产品推荐
相关产品推荐

