所以我对编程非常陌生。我参加了一个在线课程,我理解了我输入的代码,但它无法正常工作。我不断得到一个“索引越界”错误,这没有意义,因为我只保留了0-4的5个值。你能确定问题吗?谢谢!
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]);
}
}
答案 0 :(得分:1)
您的堆栈跟踪将告诉您导致异常的行。
编辑:问题是for循环结束时的分号和缺少'{'。当你执行m ++时,它会将m增加到5,然后在你的println中使用。
您还可以通过缩小变量范围来避免这些类型的问题。如果你在for循环中初始化m,它将不在以下行的范围内。
此外,遵循Java代码约定以获得更好的可读性: http://www.oracle.com/technetwork/java/javase/documentation/codeconvtoc-136057.html
答案 1 :(得分:0)
在最后一次for循环声明之后你有一个分号,删除它并且它会起作用....
for(m=0; m<5; m++)
答案 2 :(得分:0)
欢迎编程,我希望您正在享受挑战。
您发出了语法错误。 对于(m = 0; m <5; m ++); 的行实际应该是 for(m = 0; m <5; m ++){你错过了右括号} 。
这是非常不吉利的,因为这意味着程序的行为与您的预期完全不同 - 但是java编译器正在按照它所说的去做。
在java(以及许多其他编程语言)中,半冒号意味着“语句结束”。这意味着因为你在for循环之后放了一个,所发生的是它只执行for循环而不做任何其他事情。这意味着变量m最多计数到5.完成后,程序继续尝试读取数组 - &gt; 这[m] ,这[5] 。作为数组这是五个元素长,并且数组从零开始计数元素这[4] 是数组的最后一个元素。
我已经使用注释来标记程序中的结束括号,以便更容易看出错误。如果您使用Java IDE,则可以更轻松地查看此类问题。
然而,这是一个可疑的编程课程 - 虽然它确实教你如何使用数组和语句,但人们早就认识到你不应该像这样编码,因为它会导致这些问题。虽然不是初学者的编程主题,但有经验的程序员可以使用[Java collection的api](http://docs.oracle.com/javase/7/docs/technotes/guides/collections/overview.html)避免犯这个错误。
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
快乐的java黑客攻击。