Java 数组排序问题:输出结果少一个数的解决方法
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 开始,所以该循环只遍历到数组的倒数第二个元素,导致最后一个元素没有被访问到。
解决方案:
-
修改第一个
for
循环的条件 将i<nums.length
改为i<=nums.length
,这样才能遍历到最后一个元素。 -
修改第二个
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 开始,在循环遍历数组时需要注意边界条件的设置,避免遗漏元素。
原文地址: http://www.cveoy.top/t/topic/V4y 著作权归作者所有。请勿转载和采集!