注册 登录
编程论坛 J2EE论坛

[求助]这个问题怎么解决

youniankang 发布于 2007-09-03 20:59, 516 次点击

public class Demo1
{
public static void main(String[] args){
int a;
int c=new int[10];
c= { 32,87,3,589,12,1076,2000,8,622,127};

for(int i=0;i<10;i++)
{
if(c[i]>c[i+1])
{
a=c[i+1];
c[i+1]=c[i];

c[i]=a;
}
}
for( i=0;i<10;i++)
{
System.out.println(c[i]);
}
}
}
有点错误啊帮我修改一下谢谢

2 回复
#2
sea72007-09-03 22:12
以下是引用youniankang在2007-9-3 20:59:57的发言:

public class Demo1
{
public static void main(String[] args){
int a;
int c=new int[10];
c= { 32,87,3,589,12,1076,2000,8,622,127};

for(int i=0;i<10;i++)
{
if(c[i]>c[i+1])
{
a=c[i+1];
c[i+1]=c[i];

c[i]=a;
}
}
for( i=0;i<10;i++)
{
System.out.println(c[i]);
}
}
}
有点错误啊帮我修改一下谢谢

错误很明显,地址越界啊,红色部分,当i取9时,c[i+1]不就地址越界了吗?至于修改,还是你自己来吧!

[此贴子已经被作者于2007-9-3 22:13:16编辑过]

#3
hwoarangzk2007-09-04 09:55
LZ可以写成for(i=1;i<10;i++),也就是说从1开始,然后比较c[i]和c[i-1],还有,
c= { 32,87,3,589,12,1076,2000,8,622,127};这个说你非法开头,你给数组值的方式不对,可以写成:
int[] c={32,87,3,589,12,1076,2000,8,622,127};

还有,i的定义不要放在for里面,不然你的第二个for还会报错,你可以在int a下面一行写int i,然后第一个for()里面的int去掉
还有就是,如果LZ是想排序的话,一个循环好像不行的...
1