基本阵列疑惑

时间:2015-05-07 13:19:21

标签: java arrays

public class Quicks
{
    public static void main(String args[])
    {   int temp;
        int[] list={5,1,7,6,4,0,8,9};
        int i;
        for(i=0;i<=6;i++)
        {
            if(list[i]>list[i+1]);
            {   
                temp=list[i+1];
                list[i+1]=list[i];
                list[i]=temp;

            }

        }
        for(i=0;i<=6;i++)
        {
            System.out.println(list[i]);
        }

        }
    }

这是我得到的输出 1 7 6 4 0 8 9

  

我的第一个疑问是5

     

为什么7和6没有被交换

2 个答案:

答案 0 :(得分:5)

你的第一个问题。

你的循环:

for(i=0;i<=6;i++)
{
     System.out.println(list[i]);
}

将是:

for(i=0;i<=7;i++)
{
    System.out.println(list[i]);
}

因为你的数组大小是8而没有7,而且6-0 + 1 = 7,所以你不打印最后一个元素。

如果你对代码进行分析,你会认为循环将数组的第一个元素移动到最后一个位置。如果要对数组进行排序,这不是代码。

答案 1 :(得分:0)

如果您使用IDE,它应该向您显示一条警告,说明您的if状态是否为空体 - 这是因为您在行尾不能放置分号,而不应该在那里。

我建议将大括号{放在行尾,而不是下一行,以避免出现此类错误。

至于为什么不打印5 - 正如其他人提到的那样,你不会遍历整个数组。