首页 新闻 搜索 专区 学院

JAVA编译通过了但是程序跑不出来2

0
[已解决问题] 解决于 2017-05-03 18:33

原程序:

public class ArrayTest {
 float scores []=null;
 public void init()
 {
  scores = new float [5];
  for (int i=0;i<=scores.length;i++)
   scores[i]=(float) (Math.random()*100);
  }
 public void print()
 {
  for(int i=0;i<=scores.length;i++)
  System.out.println(scores[i]);
 }
 public boolean copyArray(int []src,int []dest)
 {
  if(dest.length<src.length)
   return false;
  System.arraycopy(src,0,dest,0,src.length);
   return true;
 }
 public static void main(String[] args){
  ArrayTest at=new ArrayTest();
  at.init();
  at.print();
  int[] src={1,3,5,6,7,8};
  int[] dest=new int [6];
  at.copyArray(src,dest);
  for(float x:dest){
   System.out.println("data of dest:"+x);
  }
 }
}

编译后显示:

F:\java>javac ArrayTest.java

F:\java>java ArrayTest
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
        at ArrayTest.init(ArrayTest.java:7)
        at ArrayTest.main(ArrayTest.java:23)

F:\java>

莫叹风尘的主页 莫叹风尘 | 菜鸟二级 | 园豆:204
提问于:2017-05-03 00:38
< >
分享
最佳答案
0

  for (int i=0;i<=scores.length;i++)数组越界了,应该是   for (int i=0;i<scores.length;i++)

奖励园豆:5
2012 | 专家六级 |园豆:19149 | 2017-05-03 09:10

谢谢大佬

莫叹风尘 | 园豆:204 (菜鸟二级) | 2017-05-03 18:32
其他回答(2)
0

要学习利用错误信息排错

狼爷 | 园豆:1192 (小虾三级) | 2017-05-03 10:17

谢谢

支持(0) 反对(0) 莫叹风尘 | 园豆:204 (菜鸟二级) | 2017-05-03 18:35
0

init里面for里的i不能等于数组的长度,i等于5时候会发生越界

BigStar | 园豆:202 (菜鸟二级) | 2017-05-03 10:58

谢谢您的帮助。

支持(0) 反对(0) 莫叹风尘 | 园豆:204 (菜鸟二级) | 2017-05-03 18:34
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册