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

Java中用循环求用户输入数字的MAX和MIN的代码问题排查

问题分析

你的代码存在三个核心问题,直接导致max和min始终等于最后输入的数字:

  1. 循环内直接覆盖max/min:每次循环都执行max=b; min=b;,完全覆盖之前记录的最大值和最小值,相当于只保留当前输入的数,根本没做比较逻辑。
  2. 比较逻辑位置错误:判断b > max和b < min的代码放在循环外面,仅对最后一次输入的b进行判断,完全没处理前面输入的所有数字。
  3. 初始值不合理:把max和min初始化为0,如果用户输入的全是负数,max会一直停留在0,不符合实际计算需求。
修正方案

我们需要调整初始化逻辑,把比较逻辑移到循环内部,确保每输入一个数字就进行一次比较:

  • 先读取第一个输入的数字,用它初始化max和min,避免初始值带来的误差。
  • 从第二个数字开始,每次输入后立即和当前的max、min比较,实时更新对应的值。
修正后的代码
import java.util.Scanner;

public class GirilenSayilardanMinveMaxDeğerleriBulma {

    public static void main(String[] args) {
        
        Scanner input = new Scanner(System.in);   
        
        System.out.print("kaç sayı gireceksiniz:  ");
        int a = input.nextInt();
        
        // 读取第一个数作为初始的max和min
        System.out.print("1.sayıyı giriniz:  ");
        int b = input.nextInt();
        int max = b;
        int min = b;
        
        // 从第二个数开始循环处理
        for(int i = 2; i <= a; i++) {
            System.out.print(i + ".sayıyı giriniz:  ");
            b = input.nextInt();
            
            // 更新最大值
            if(b > max) {
                max = b;
            }
            // 更新最小值
            if(b < min) {
                min = b;
            }
        }
        
        System.out.println("最大值: " + max);
        System.out.println("最小值: " + min);
        input.close();
    }
}
关键修改说明
  • 初始化方式优化:用第一个输入的数字初始化max和min,确保初始值是用户实际输入的数,避免0带来的错误。
  • 循环范围调整:循环从i=2开始,因为第一个数已经完成读取和初始化操作。
  • 比较逻辑内移:每次输入新数字后立即和当前的max、min比较,实时更新最大值和最小值。
  • 移除无效判断:删除循环外的多余判断逻辑,避免干扰最终结果输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 20:40:25