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

如何修改Java代码实现输入整数的升序排列显示?

整数升序排序问题排查与修复

问题场景

实现三个整数的升序排列时出现错误,测试案例如下:

  • 测试案例1:

    Enter first integer:6
    Enter first integer:1
    Enter first integer:5

  • 测试案例2:

    Case (2)
    Enter first integer:9
    Enter first integer:7
    Enter first integer:2

原代码问题分析

给出的代码存在两个核心问题:

  1. 输出时机错误:排序逻辑还未执行就打印了初始输入的数值,导致排序后的正确结果无法被输出。
  2. 排序触发条件不全:仅当number2 < number1 || number3 < number1时才执行排序,会漏掉很多需要排序的场景(比如number1是最小值,但number2大于number3的情况)。

原代码:

import java.util.Scanner;

public class AscendingOrder
{
  public static void main(String [] args)
  {
     Scanner input = new Scanner(System.in);
     
     System.out.print("Enter first integer: ");
     int number1 = input.nextInt();
     
     System.out.print("Enter second integer: ");
     int number2 = input.nextInt();
     
     System.out.print("Enter third integer: ");
     int number3 = input.nextInt();
     
     // 错误:排序前就输出初始值
     System.out.println("Order ascending: " + number1 + ", " + number2 + " ," + number3);

     
     int temp;
     // 错误:仅部分情况触发排序,逻辑覆盖不全
     if(number2 < number1 || number3 < number1)
     {
       if(number2 < number1)
       {
             temp = number1;
             number1 = number2;
             number2 = temp;
        }
        if (number3 < number1)
        {
           temp = number1;
           number1 = number3;
           number3 = temp;
         }
         if (number3 < number2)
         {
               temp = number2;
               number2 = number3;
               number3 = temp; 
          }
                     
        }
     }
  }

修复后的代码

调整输出位置,移除错误的条件判断,确保排序逻辑始终执行:

import java.util.Scanner;

public class AscendingOrder
{
  public static void main(String [] args)
  {
     Scanner input = new Scanner(System.in);
     
     System.out.print("Enter first integer: ");
     int number1 = input.nextInt();
     
     System.out.print("Enter second integer: ");
     int number2 = input.nextInt();
     
     System.out.print("Enter third integer: ");
     int number3 = input.nextInt();
     
     int temp;
     // 确保number1 <= number2
     if(number2 < number1)
     {
           temp = number1;
           number1 = number2;
           number2 = temp;
      }
      // 确保number1 <= number3
      if (number3 < number1)
      {
         temp = number1;
         number1 = number3;
         number3 = temp;
       }
       // 确保number2 <= number3
       if (number3 < number2)
       {
             temp = number2;
             number2 = number3;
             number3 = temp; 
        }
     // 排序完成后输出结果
     System.out.println("Order ascending: " + number1 + ", " + number2 + ", " + number3);
     }
  }

修复说明

  1. 将输出语句移至排序逻辑之后,保证打印的是排序后的最终数值。
  2. 移除外层的条件判断,无论输入顺序如何,都执行完整的三步排序,确保所有输入场景都能得到正确的升序结果。

内容的提问来源于stack exchange,提问作者Rachel Flores

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 19:52:54