哪位大佬帮我看看我代码好像是没问题的但是输出却有问题
package and;
import java.util.Scanner;
public class ip {
public static void main(String[] args) {
float[] a=new float[6];
float sum=0,ave,c=0;
int i,k=0;
Scanner sc=new Scanner(System.in);
System.out.println(“请输入考试成绩:”);
for(i=0;i<a.length;i++)
a[i]=sc.nextInt();
for(i=0;i<a.length;i++)
sum+=a[i];
ave=sum/a.length;
for(i=0;i<a.length;i++)
{if(a[i]<ave)
k++;
}
System.out.println(“学生平均成绩为:”+ave+”不及格人数为:”+k+”人”);
for(i=0;i<a.length;i++) {
if(a[i]<a[i+1])
{c=a[i];
a[i]=a[i+1];
a[i+1]=c;
System.out.print(a[i]);
}
}
}
}
兄弟,代码格式化呀!!
这样子不就好多了。
另外来说一下问题:程序报错抛出的异常为:
ArrayIndexOutOfBoundsException
翻译过来就是数组索引超出范围异常。也就是我们常说的数组越界。这里,你定义的数组为长度为 6,索引从 0 到 5 的 float:
但是在后面这段代码中:
当 i 循环到 5 时,这里的 a[i+1] 就会去访问 a[6] 的地址,故产生数组越界。
解决办法也很简单,可以判断一下边界情况,也可以将数组开大一点。