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)
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
一楼说得对