我是Java的初学者。我写了几行代码,它显示了错误:
线程“ main”中的异常java.lang.ArrayIndexOutOfBoundsException:0
public string url;
IEnumerator Start()
{
url = Application.dataPath + "/StreamingAssets/shareImage.png";
using (WWW www = new WWW(url))
{
yield return www;
Renderer renderer = GetComponent<Renderer>();
renderer.material.mainTexture = www.texture;
}
}
答案 0 :(得分:0)
在创建Issue类的对象时,n的值为0,因此创建了大小为0的ID和Name数组。现在,在从用户那里获取输入之后,只需设置n表示用户输入,但ID []和Name []数组的大小仍然为0。因此,在get方法内部,您将访问大小为0的数组中的开箱即用的索引。
这是更正的代码:
import java.util.Scanner;
public class Issue {
public static Scanner scan = new Scanner(System.in);
int n;
int ID[];
String [] Name;
public void get()
{
for (int i = 0; i < n; i++) {
System.out.println("Enter " + (i+1) + "st Employe ID :");
ID[i] = scan.nextInt();
System.out.println("Enter Employe Name:");
Name[i]=scan.nextLine();
}
}
public static void main(String[] args) {
Issue obj=new Issue();
System.out.println("Enter no.of Employes:");
obj.n=scan.nextInt();
obj.Name =new String[n];
obj.ID = new int[n];
obj.get();
}
}
在上面的代码中,我仅对ArrayIndexOutOfBound进行了更正。但是,可以通过遵循以下良好的编程习惯来改进您的代码:
答案 1 :(得分:0)
这有点棘手,因为尽管您将obj.n=scan.nextInt();
的数字设置为n
,但是数组的大小仍然为0
,因为它已使用dafult n
值进行了初始化0。
该行:
obj.n=scan.nextInt();
不保证为数组ID
和Name
重新分配内存。我建议您避免使用公共变量,并使用构造函数进行总数封装。
public static final Scanner scan = new Scanner(System.in);
private final int n;
private final int ID[];
private final String[] Name;
public Main(int number) {
this.n = number;
this.ID = new int[n];
this.Name = new String[n];
}
public void get() {
for (int i = 0; i < n; i++) {
System.out.println("Enter " + (i+1) + "st Employe ID :");
ID[i] = scan.nextInt();
scan.nextLine();
System.out.println("Enter Employe Name:");
Name[i] = scan.nextLine();
}
}
public static void main(String[] args) {
System.out.println("Enter no.of Employes:");
Main obj = new Main(scan.nextInt());
obj.get();
}
此外,您必须调用scan.nextLine();
来消耗行本身,因为Scanner::nextInt
不会像Scanner::nextLine
那样终止行。
答案 2 :(得分:0)
线程“ main”中的异常java.lang.ArrayIndexOutOfBoundsException:0
在您尝试以大于索引大小的索引获取元素时发生 数组。
例如,
您有一个大小为10的数组 A ,并且您正在访问 A [10] ,那么您将获得异常,因为
对于您来说,当变量 n 的值为0时,您已经初始化了数组 ID 和 Name 。要解决此错误,您应该在初始化变量n后初始化这些数组。