我正在尝试创建一个应用程序,要求用户输入数组中的项目数,然后让他们用整数填充该数组。之后,打印出来。
当我跑它时它要求我输入,但随后给我:
线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException:10 在main.main(main.java:13)
import java.util.Scanner;
public class main {
public static void main(String [] args){
Scanner scan = new Scanner(System.in);
System.out.println("Input number of units in array: ");
int i1 = scan.nextInt();
int[] arrayOne= new int[i1];
for(int i=0 ; i<=i1 ; i++){
System.out.println("Enter " + i + " unit in array.");
arrayOne[i] = scan.nextInt();
}
System.out.println(arrayOne);
}
}
你能帮助我找出我的错误吗?我尝试了一些不同的东西,但似乎没有任何效果。
谢谢!
答案 0 :(得分:5)
数组基于零。在这里你超过了上限。替换:
for (int i = 0; i <= i1; i++) {
带
for (int i = 0; i < i1; i++) {
还使用Arrays#toString显示数组内容,否则将显示数组的Object#toString表示形式:
System.out.println(Arrays.toString(arrayOne));
答案 1 :(得分:0)
您的代码似乎需要每次在循环中进行新的扫描。
您也进行了一次迭代(与数组的大小相比)。
这段代码可能会更好用:
import java.util.Scanner;
public class Main
{
public static void main(String [] args)
{
Scanner scan = new Scanner(System.in);
System.out.println("Input number of units in array: ");
int i1 = scan.nextInt();
int[] arrayOne= new int[i1];
for(int i=0 ; i<i1 ; i++)
{
System.out.println("Enter " + i + " unit in array.");
Scanner other_scan = new Scanner(System.in);
arrayOne[i] = other_scan.nextInt();
}
for(int i=0 ; i<i1 ; i++)
{
System.out.println("arrayOne["+i+"]: "+arrayOne[i]);
}
}
}