Java实现:找出最大最小整数并计算其中间位数字之和的问题
解决整数组的最大最小值查找及中间位数字求和问题
一、优化最大最小值的查找方式
你之前用多个if判断的方式不仅繁琐,还容易出现漏判或初始化错误的问题。这里提供两种简洁可靠的实现方式:
方式1:使用Java Stream API(Java 8+)
利用Stream的内置方法可以一行获取数组的最大、最小值,代码简洁且可读性高:
import java.util.Arrays; public class Main { public static void main(String[] args) { int[] nums = {175, 345, -567, 893, 100, -999}; // 获取最大值和最小值 int max = Arrays.stream(nums).max().getAsInt(); int min = Arrays.stream(nums).min().getAsInt(); } }
方式2:手动遍历数组
如果不使用Stream,手动遍历的方式也比多if判断更清晰,只需初始化极值后逐个比较:
public class Main { public static void main(String[] args) { int[] nums = {175, 345, -567, 893, 100, -999}; // 初始化max为整数最小值,min为整数最大值 int max = Integer.MIN_VALUE; int min = Integer.MAX_VALUE; for (int num : nums) { if (num > max) { max = num; } if (num < min) { min = num; } } } }
二、正确获取中间位数字
从示例来看,输入的都是三位数整数,中间位即十位数字。需要注意:负数的符号不影响数字位,必须先取绝对值再计算,否则会得到错误的负数位:
// 获取最大值的中间位(十位) int maxMiddle = Math.abs(max) % 100 / 10; // 获取最小值的中间位(十位) int minMiddle = Math.abs(min) % 100 / 10; // 计算和 int sum = maxMiddle + minMiddle;
- 逻辑说明:
Math.abs(num)消除负号 →%100取后两位 →/10取十位数字(整数除法自动舍弃个位)
三、完整运行代码
将上述逻辑整合,即可得到符合示例需求的完整代码:
import java.util.Arrays; public class Main { public static void main(String[] args) { int[] nums = {175, 345, -567, 893, 100, -999}; // 获取最大最小值(这里用Stream方式,也可以替换为手动遍历) int max = Arrays.stream(nums).max().getAsInt(); int min = Arrays.stream(nums).min().getAsInt(); // 计算中间位数字 int maxMiddle = Math.abs(max) % 100 / 10; int minMiddle = Math.abs(min) % 100 / 10; int sum = maxMiddle + minMiddle; // 输出结果 System.out.println("最大值:" + max + "、最小值:" + min); System.out.println("中间位数字和为" + sum + "(" + maxMiddle + "+" + minMiddle + ")"); } }
运行后输出:
最大值:893、最小值:-999
中间位数字和为18(9+9)
四、扩展:适配任意位数的整数
如果输入的整数位数不固定,需要先计算数字的总位数,再定位中间位:
public static int getMiddleDigit(int num) { num = Math.abs(num); String numStr = Integer.toString(num); int length = numStr.length(); // 奇数位取中间一位,偶数位可根据需求取左/右中间位(这里取左中间) int middleIndex = length / 2; return numStr.charAt(middleIndex) - '0'; }
内容的提问来源于stack exchange,提问作者Albin13299
相关产品推荐
相关产品推荐

