Java 字符串数组错误
我有一个数组错误,说它超出了界限,我不知道是什么错了。这是我的密码:Java 字符串数组错误,java,arrays,string,println,Java,Arrays,String,Println,我有一个数组错误,说它超出了界限,我不知道是什么错了。这是我的密码: import java.util.*; public class gameVar { public static int size; public static int counter; public static Scanner input = new Scanner(System.in); public static String currentIn; public static S
import java.util.*;
public class gameVar {
public static int size;
public static int counter;
public static Scanner input = new Scanner(System.in);
public static String currentIn;
public static String nameArray[] = new String[size];
}
第二个类(我在第6行得到错误):
public类主线程扩展gameVar{
公共静态void main(字符串[]args){
System.out.println(“请键入所需的玩家数量:”;
size=input.nextInt();
用于(int计数器=0;计数器<大小;计数器++){
System.out.println(“请输入玩家名称”+名称数组[计数器])
}
}
}
非常感谢你的帮助 以下命令分配零元素数组:
public static int size;
public static String nameArray[] = new String[size]; // <<<< Here, `size` is zero
然后,您可以从
nameArray
的声明中删除=new String[size]
,在获得所需的数组类大小后,您没有重新初始化它。您的设计作为一个整体需要做一些工作,因为您过度依赖静态(全局)状态
在gameVar中:
public static int size; // <-- by default this is zero
public static String nameArray[] = new String[size]; // <-- Initialized here to size zero!
但是正如我前面提到的,您应该重新考虑您的设计(设计一个没有静态变量的适当类)。在您的字段声明中,当您设置
公共静态int size代码>Java默认大小为0。因此,当您创建字符串数组时,数组的大小为0
通常,不建议在字段声明中创建新对象。相反,只要有
public static String nameArray[];
然后在知道大小后,将nameArray设置为新的字符串数组
size = input.nextInt();
nameArray[] = new String[size];
for(......
数组
大小本质上是静态的,名称数组
用大小
声明为零,因为静态大小变量
没有初始化,它将得到默认值0
所以nameArray[counter]
它必须填充数组越界异常
必须使用正确的大小初始化数组
nameArray = new String[size];
您的MainThread
类应如下所示:
public class mainThread extends gameVar {
public static void main(String[] args){
System.out.println("Please type the desired amount of players: ");
size = input.nextInt();
nameArray = new String[size];//reinitialize the nameArray here.
for(int counter = 0; counter < size; counter++){
System.out.println("Please enter the name of player " + nameArray[counter]=input.next())
}
}
}
public类主线程扩展gameVar{
公共静态void main(字符串[]args){
System.out.println(“请键入所需的玩家数量:”;
size=input.nextInt();
nameArray=新字符串[size];//在此处重新初始化nameArray。
用于(int计数器=0;计数器<大小;计数器++){
System.out.println(“请输入玩家名称”+nameArray[counter]=input.next())
}
}
}
大小的值在定义时为零。因此,将创建大小为0的数组。
例如:publicstaticstringnamearray[]=新字符串[0]代码>
因此你得到了例外。为变量大小指定一些值。初始化数组时,数组大小设置为0
公共静态字符串nameArray[]=新字符串[size]
如果更改“大小”的值
size=input.nextInt()
它更改整数变量size的值,但不更改数组的大小,这就是为什么会出现错误。您可以通过打印数组的大小(nameArray.length)进行检查
您需要在获取“size”值后对其进行初始化 您确定nameArray[counter]
对于循环中counter
的每个值都是有效值吗?如果答案对您有帮助,您可以对其进行评分。:-)
public static String nameArray[];
size = input.nextInt();
nameArray[] = new String[size];
for(......
nameArray = new String[size];
public class mainThread extends gameVar {
public static void main(String[] args){
System.out.println("Please type the desired amount of players: ");
size = input.nextInt();
nameArray = new String[size];//reinitialize the nameArray here.
for(int counter = 0; counter < size; counter++){
System.out.println("Please enter the name of player " + nameArray[counter]=input.next())
}
}
}