JAVA程序出错啦?请问是什么问题?要怎样改?

来源:百度知道 编辑:UC知道 时间:2024/06/07 22:44:13
package mm;

public class Qw {
public static void main (String[]args){
int i=(int)Math.random();
double []r=new double [i];
for ( i=0;i<r.length;i++);
r[i]=(int) (Math.random()*100);
System.out.println("r["+i+"]="+r[i] );
}
}

错误提示:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at mm.Qw.main(Qw.java:10)

数组越界啦

Math.random返回的是一个介于0到1之间的数,在转换成整形,就是0了。你再用double []r=new double [i];这条语句,相当于声明一个长度为0的数组。

具体怎么改随你了

for循环没有完成对r[i]=(int) (Math.random()*100)的赋值,不知道是你故意的还是写的不对。
for循环完后,i成了double []r=new double [i]中i的值,因为在数组中值是从0开始的,所以r[i]=(int) (Math.random()*100)中i的值已经越界。

建议改成
for ( i=0;i<r.length;i++){
r[i]=(int) (Math.random()*100);
}

Math.random()返回0到1的数,而你强制转换成int,就成为了0

一楼说得对