打印array用户输入



我正试图打印用户输入的数字,但我得到了一个错误。下面是我的代码:

public static void main(String[] args) {
    Scanner input=new Scanner(System.in);
    int size=0,score=0;
    int [] a=new int[size];
    int len=a.length;
    do
    {
        System.out.print("Please enter a number between 1 to 5: ");
        size=input.nextInt();
    }
    while ((size<1) || (size>5));
    for (int i=1;i<=size;i++)
    {   
        do
        { 
            System.out.print("Enter your "+i+" score (1-100):");
            score=input.nextInt();
        }
        while((score<1) || (score>100));
    }
    for (int i=1;i<=size;i++)
        System.out.println(a[i]+ " ");
    }
}

下面是我的输出和错误:请输入1到5:2之间的数字输入你的1分(1-100):54输入你的分数(1-100):64线程"main"中的异常java.lang.ArrayIndexOutOfBoundsException: 1Week08.BigArray2.main (BigArray2.java: 27)

你的代码有四个错误

  1. 数组初始化为0
  2. 用户输入未存储在数组
  3. 从索引1开始迭代,但数组从0开始
  4. 扫描仪未关闭

    Scanner input = new Scanner(System.in);
    int size = 0, score = 0;
    do {
        System.out.print("Please enter a number between 1 to 5: ");
        size = input.nextInt();
    } while ((size < 1) || (size > 5));
    int[] a = new int[size]; //1
    for (int i = 0; i < size; i++) {
        do {
            System.out.print("Enter your " + (i + 1) + " score (1-100):");
            score = input.nextInt();
            a[i] = score; //2
        } while ((score < 1) || (score > 100));
    }
    for (int i = 0; i < size; i++) //3
        System.out.print(a[i] + " ");
    input.close(); //4
    

输出
Please enter a number between 1 to 5: 4
Enter your 1 score (1-100):99
Enter your 2 score (1-100):98
Enter your 3 score (1-100):97
Enter your 4 score (1-100):96
99 98 97 96 

你的代码有几个问题:

  1. 数组声明为零大小。在java中,数组的大小是在初始化时声明的,以后可以更改。
  2. 您从未将分数存储到数组中。因此数组为空。
  3. 在java中迭代数组时总是以0开始循环索引。

下面是修改后的工作程序:

进口java.util.Scanner;

ArrayPrint {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int size = 0, score = 0;
        int[] a;
        do {
            System.out.print("Please enter a number between 1 to 5: ");
            size = input.nextInt();
        } while ((size < 1) || (size > 5));
        //Allocating space to array
        a = new int[size];
        int len = a.length;
        for (int i = 0; i <size; i++) {
            do {
                System.out.print("Enter your " + i + " score (1-100):");
                score = input.nextInt();
                a[i] = score;
            } while ((score < 1) || (score > 100));
        }
        for (int i = 0; i <size; i++)
            System.out.println(a[i] + " ");
    }
}

Please enter a number between 1 to 5: 2
Enter your 0 score (1-100):22
Enter your 1 score (1-100):11
22 
11 

请查看您的第4行代码int [] a=new int[size];,此时size=0,并且您已将大小为0的整数数组"a"初始化,但您试图迭代数组"a"最后使用代码for (int i=1;i<=size;i++) System.out.println(a[i]+ " "); },这导致数组索引超出界限异常。

移动到第一行之后的代码行下面,while循环-:

int[] a = new int[size];
    int len = a.length;

现在更正最后一个for循环,如下所示-:

for (int i = 0; i < size; i++)
        System.out.println(a[i] + " ");
}

数组的索引从0开始,以size-1结束。

最新更新