Java Array程序实现冒泡排序

Java Array program to implement bubble sort

所以我对编程很陌生。我参加了一个在线课程,我理解我输入的代码,但它不能正常工作。我经常会得到一个"索引越界"的错误,这是没有意义的,因为我只保留了0-4之间的5个值。你能找出问题所在吗?谢谢!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public class LEGGO
{
public static void main(String args[])
{
    int j, i, l, m;
    int This[] = new int[5];
    This[0] = 8;
    This[1] = 4;
    This[2] = 24;
    This[3] = 14;
    This[4] = 56;
    for (j=1; j<5; j++)
    {
        for(l=0; l<5-j; l++)
        {
            if (This[l]<This[l+1])
            {
                i=This[l];
                This[l]=This[l+1];
                This[l+1]=i;
            }
        }
    }
    for(m=0; m<5; m++);
        System.out.print(This[m]);
    }
}

堆栈跟踪将告诉您导致异常的行。

编辑:问题是for循环末尾的分号缺少""。当您执行m++时,它将增加m到5,然后在您的println中使用。

您还可以通过缩小变量范围来避免这些类型的问题。如果您在for循环内初始化m,它将不在下面一行的作用域内。

另外,为了更好的可读性,遵循Java代码约定:http://www.oracle.com/technetwork/java/javase/documentation/codeconvtoc-136057.html


欢迎来到编程领域,我希望您喜欢这个挑战。

您犯了语法错误。(m=0;m<5;m++)的线实际上应该是(m=0;m<5;m++)的线您错过了右大括号。

这是相当不吉利的,因为这意味着程序的行为与你期望的非常不同,但是Java编译器正在做它所告诉的。

在Java(和许多其他编程语言)中,半冒号意味着"语句结束"。这意味着,因为您已经在for循环之后放置了一个for循环,所以它只执行for循环而不执行任何其他操作。这意味着变量m被计算为5。完成后,程序继续尝试读取数组->这个[m],就是这个[5]。因为数组有五个元素,数组从零开始计数,所以这个元素[4]是数组的最后一个元素。

我已经使用注释为程序中的右大括号添加了标签,这样就更容易看出哪里出了问题。如果使用Java IDE,会使这样的问题更容易解决。

然而,这是一个可疑的编程课程——尽管它确实教会了您如何使用数组和for语句,但人们早就认识到您不应该这样编写代码,因为它会导致此类问题。虽然不是初学者的编程主题,但有经验的程序员会避免使用[ Java集合的API ](HTTP://DOCS.Oracle .COM/JavaSe/ 7 /DOCS/TealNeks/Cuths/Studio/Exp概.html)来犯此错误。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class LEGGO{
    public static void main(String args[]){
            int j, i, l, m;
            int This[] = new int[5];
            This[0] = 8;
            This[1] = 4;
            This[2] = 24;
            This[3] = 14;
            This[4] = 56;

            for (j=1; j<5; j++){
                for(l=0; l<5-j; l++){
                        if (This[l]<This[l+1]){
                            i=This[l];
                            This[l]=This[l+1];
                            This[l+1]=i;
                        }// end if
                } //end for l
            } //end for j

            for(m=0;m<5;m++){
                System.out.print(This[m]);
            }// end for m
    }//end main
}//end class

快乐爪哇黑客。


在最后一个for循环Delcaration之后,您有一个分号,删除它,它就会工作……

1
for(m=0; m<5; m++)