public class test {
public static void main(String[] args){
for (int i = 0; i < 2; i++) {
Scanner in=new Scanner(System.in);
System.out.println("请输入成绩");
int[] a=new int[i];
a[i]=in.nextInt();
System.out.println("成绩是"+a[i]);
}}}
上面这种写法报数组下标超限的错。。。
public class BlackDemo {
static int[] b;
public static void main(String[] args){
for (int i = 0; i < 2; i++) {
Scanner in=new Scanner(System.in);
System.out.println("请输入成绩");
b[i]=in.nextInt();
System.out.println("成绩是"+b[i]);
}
}
}
这个报空指针。。。难道静态的全局变量,在for循环中被复制了还不能更改?
int[] a=new int[i];
a[i]=in.nextInt();
i初始值是0,数组长度是0,a[0]就会数组越界啊
static int[] b; 还没有分配空间 就是null啊
http://developer.51cto.com/art/200906/128274.htm
第一个。你在循环中声明了一个0长度的数组。。当然超限了。。
第二个。。你并没有初始化你的b数组啊。。当然是空指针了。。。
a[0]不能代表一个长度么~~我的理解是比如a[3],那么他的值分别是a[0] a[1],a[2]~~~
你那个数组声明的有问题。。不应该放在里面。。第一次就是空指针。。因为数组没有分配内存空间。。所以无法存放数,所以就是空了!!
数组的下标是从0开始的,如int【】 a=new int[3],那么它就有三个元素,分别为a[0],a[1],a[2]
当进入第一次循环是i=0;此时你生声明的数组长度为0;肯定报错,应该改为1开始,在着数组下标是从0开始的,你定义a【i】数组。那么a【i】=。。这句话就是错的。超界了