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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 18:40:29