Java 数组排序问题:输出结果少一个数的解决方法

在使用 Java 对数组进行排序时,可能会遇到输出结果少一个数的问题。这通常是由于循环遍历条件设置不当导致的。

问题代码:

package com.company;

public class _02Main {
    public static void main(String[] args)
    {
        int []nums={38,47,56,27,32,44,69,86};
        for(int i = 1;i<nums.length;i++)
        {
            for(int j = 0;j<nums.length -i;j++)
            {
                if(nums[j]>nums[j+1])
                {
                    int temp = nums[j];
                    nums[j] = nums[j+1];
                    nums[j+1] = temp;
                }
            }
        }
        for(int i = 1;i<nums.length;i++) System.out.print(nums[i]+" ");
    }
}

问题分析:

代码中的第一个 for 循环用于遍历数组,条件为 i<nums.length,由于数组下标从 0 开始,所以该循环只遍历到数组的倒数第二个元素,导致最后一个元素没有被访问到。

解决方案:

  1. 修改第一个 for 循环的条件i<nums.length 改为 i<=nums.length,这样才能遍历到最后一个元素。

  2. 修改第二个 for 循环的起始下标i=1 改为 i=0, 因为数组下标从 0 开始, 才能正确输出所有元素。

修改后的代码:

public class _02Main {
    public static void main(String[] args)
    {
        int []nums={38,47,56,27,32,44,69,86};
        for(int i = 1;i<=nums.length;i++) // 修改此处条件
        {
            for(int j = 0;j<nums.length -i;j++)
            {
                if(nums[j]>nums[j+1])
                {
                    int temp = nums[j];
                    nums[j] = nums[j+1];
                    nums[j+1] = temp;
                }
            }
        }
        for(int i = 0;i<nums.length;i++) System.out.print(nums[i]+" "); // 修改此处下标从0开始
    }
}

通过以上修改,代码就可以正确输出所有排序后的数组元素了。

总结:

数组下标从 0 开始,在循环遍历数组时需要注意边界条件的设置,避免遗漏元素。

Java 数组排序问题:输出结果少一个数的解决方法

原文地址: http://www.cveoy.top/t/topic/V4y 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录