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

Java输入3个不同数字求最大值程序循环输入不停止问题排查

问题原因
  • 你使用了无终止条件的while(true)循环,仅靠输入-1才会终止,没有设置输入满3个有效数字就停止的逻辑
  • 数组初始化长度为100,contain方法遍历全量数组时,未赋值的数组元素默认值为0,会导致输入0时被误判为重复
  • 题目要求出现重复就直接退出程序,你当前的逻辑是重复后提示重输入,不符合要求
  • 你使用了内置的Math.max方法计算最大值,违反了题目禁止使用内置最大值查找函数的约束
  • 最大值初始值固定为0,如果输入的三个数全为负数,会得到错误的计算结果
修正后代码
import java.util.Scanner;
public class Assignment_1_Exercise_22 {
    // 只遍历已经存入的有效元素,避免误判默认值0为重复
    public static boolean contain(int[] numbs, int count, int x) {
        for (int i = 0; i < count; i++) {
            if (numbs[i] == x) {
                return true;
            }
        }
        return false;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        // 仅需存储3个数字,数组长度设为3即可
        int[] numbs = new int[3];
        int count = 0;
        int largest = 0;

        // 循环终止条件修改为输入满3个有效数字就停止
        while (count < 3) {
            System.out.print("请输入第" + (count + 1) + "个数字:");
            int x = sc.nextInt();

            if (contain(numbs, count, x)) {
                System.out.println("存在重复数字,程序退出。");
                sc.close();
                // 出现重复直接退出程序,符合题目要求
                return;
            }

            numbs[count] = x;
            // 手动实现最大值比较,不使用内置Math.max
            if (count == 0) {
                largest = x;
            } else {
                if (x > largest) {
                    largest = x;
                }
            }
            count++;
        }

        System.out.println("三个数中的最大值是:" + largest);
        sc.close();
    }
}
改动说明
  • 循环条件改为count < 3,输入满3个互不重复的数字就自动终止,不需要额外输入-1
  • 优化了contain方法,仅遍历已经存入的有效元素,避免默认值0导致的重复误判
  • 检测到重复数字后直接终止程序,符合题目要求
  • 手动实现最大值比较逻辑,删除了内置的Math.max调用,满足约束条件
  • 第一个输入的数字直接赋值为初始最大值,解决全负数输入时最大值计算错误的问题

内容的提问来源于stack exchange,提问作者Daniel.grafton

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 13:57:03