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

Java数组录入、复制、降序排序功能异常无输出问题排查

问题修复说明

核心错误点

  • askInfo方法返回值错误:用户输入0时返回了数值0,导致后续创建的realArray长度为0,无内容可输出。正确逻辑应返回当前已录入的有效数字个数i。
  • copyInfo方法返回值未被接收:Java为值传递,方法内对形参realArray的重新赋值无法影响外层main方法的变量,需要主动接收方法返回的处理后数组。
  • setArray排序逻辑错误:当前判断条件实现的是升序排序,将判断条件反转即可实现降序要求。

修正后完整代码

import java.util.*;
public class RevisionExercise {
    public static void main(String[] args) {
      
        int[] tempArray = new int[100];
        System.out.println("Type in numbers. Type zero to quit.");
        int amountOfNumbers = askInfo(tempArray);
       
        int[] realArray = new int[amountOfNumbers];
        // 接收copyInfo返回的处理后数组
        realArray = copyInfo(realArray, tempArray);
      
        setArray(realArray);
        
        printArray(realArray);
    }
    public static int askInfo(int[] tempArray) {
        Scanner reader = new Scanner(System.in);
        int i;
        for (i = 0; i < tempArray.length; i++) {
            System.out.print((i+1) + ". number: ");
            tempArray[i] = reader.nextInt();
            if (tempArray[i] == 0) {
                // 返回已录入的有效数字个数,不是0
                return i;    
            }
        }
        return i;
    }   
    
    private static int[] copyInfo(int[] realArray, int[] tempArray)
    {
        int targetIndex = 0;
        for( int sourceIndex = 0;  sourceIndex < tempArray.length;  sourceIndex++ )
        {
            if( tempArray[sourceIndex] != 0 )
                tempArray[targetIndex++] = tempArray[sourceIndex];
        }
        realArray = new int[targetIndex];
        System.arraycopy( tempArray, 0, realArray, 0, targetIndex );
        return realArray;
    }
    
    public static int[] setArray(int[] realArray)
    {
        int temp = 0;
        for (int i = 0; i <realArray.length; i++) {     
          for (int j = i+1; j <realArray.length; j++) {     
              // 反转判断条件实现降序
              if(realArray[i] < realArray[j]) {
                 temp = realArray[i];    
                 realArray[i] = realArray[j];    
                 realArray[j] = temp;    
               }     
            }
        }  
        return realArray;
    }   

    public static void printArray(int[] realArray ) {
        System.out.println("\nOrdered array: ");
        for(int i = 0; i < realArray .length; i++) {
            System.out.println(realArray [i]);
        }
    }
}

运行验证

修改后输入测试用例3、8、5、6、9、0,即可得到预期的降序输出结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 21:36:05