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

Java数组排序判断代码解析及正确调用方法咨询

数组排序判断代码解析与调用修正

一、isSorted方法逻辑解析

先看你提供的isSorted方法代码:

public class array{
    public boolean isSorted (int[] a){
       int temp = a[0];
       for (int i=1; i < a.length; i++) {
           if (temp < a[i])
               temp = a[i];
           else
               return false;
       }
       return true;
    }
}

这段代码实际功能是判断数组是否为严格递增排列,并非你预期的降序判断,逻辑细节如下:

  • 初始化temp为数组第一个元素a[0]
  • 从索引1开始遍历数组后续元素:
    • 如果当前元素a[i]大于temp,说明符合递增要求,更新temp为当前元素后继续遍历
    • 如果当前元素a[i]小于或等于temp,直接返回false,表示数组不是严格递增
  • 遍历完成后返回true,说明数组是严格递增的

如果要实现判断数组是否降序排列(允许相等的非递增),需要修改逻辑:

public boolean isSorted(int[] a) {
    int temp = a[0];
    for (int i = 1; i < a.length; i++) {
        // 降序要求前一个元素 >= 当前元素,否则返回false
        if (temp < a[i]) {
            return false;
        }
        temp = a[i];
    }
    return true;
}

如果需要严格降序(前一个元素必须大于当前元素),则把判断条件改为temp <= a[i]。

二、main方法中正确调用isSorted的步骤

你当前的调用代码存在三个问题:

  1. 实例化的WhileLoop类和定义isSorted方法的array类不匹配
  2. 调用isSorted时没有传入要求的int[]类型参数
  3. 类名命名不符合Java规范(建议使用大驼峰,比如ArrayDemo而非array)

修正后的调用示例(同类中包含main方法)

public class ArrayDemo {
    // 这里放你修正后的降序判断逻辑,或者原有的严格递增逻辑
    public boolean isSorted(int[] a) {
        int temp = a[0];
        for (int i = 1; i < a.length; i++) {
            if (temp < a[i]) {
                return false;
            }
            temp = a[i];
        }
        return true;
    }

    public static void main(String[] args) {
        // 1. 实例化包含isSorted方法的类
        ArrayDemo demo = new ArrayDemo();
        
        // 2. 定义要测试的int数组
        int[] descendingArray = {5, 4, 3, 2, 1}; // 降序数组
        int[] nonDescendingArray = {1, 3, 2, 4}; // 非降序数组
        
        // 3. 调用isSorted方法,传入数组参数,并接收返回结果
        boolean isDesc1 = demo.isSorted(descendingArray);
        boolean isDesc2 = demo.isSorted(nonDescendingArray);
        
        // 4. 输出结果验证
        System.out.println("数组5,4,3,2,1是否降序:" + isDesc1); // 输出true
        System.out.println("数组1,3,2,4是否降序:" + isDesc2); // 输出false
    }
}

单独类中调用的示例

如果要把main方法放在单独的类中,确保ArrayDemo类可访问(同包或public修饰):

public class First {
    public static void main(String[] args) {
        ArrayDemo demo = new ArrayDemo();
        int[] testArray = {9, 7, 7, 5};
        boolean result = demo.isSorted(testArray);
        System.out.println("数组是否降序:" + result);
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 14:40:34