如何调整此代码以输入和打印数字列表?

时间:2015-08-06 18:40:05

标签: java arrays input

我正在尝试创建一个允许用户将数字输入到名为“numArray”的数组中的程序,但是一旦用户将数字输入到数组中,就会抛出异常。怎么解决这个问题?

import java.util.Scanner;

class ArrayNumList
{
    public static void main(String[]args)
    {
        Scanner in = new Scanner(System.in);

        System.out.println("How many nums would you like to enter? ");
        int n = in.nextInt();
        System.out.println("Enter " + n + " nums");
        int[] numArray = new int[n];

        for(int i = 0; i <= n; i++)
        {
            int index = in.nextInt();
            System.out.print(numArray[index]);
        }
    }
}

4 个答案:

答案 0 :(得分:1)

如果用户插入足够多的数字/负数,则没有index索引。通过使用像这样的实际循环变量i来修复它:

for(int i = 0; i <= n; i++) {
    numArray[i] = in.nextInt();
    System.out.print(numArray[i]);
}

答案 1 :(得分:0)

问题是您没有将数据存储在数组中的任何位置。

for(int i = 0; i <= n; i++)
{
    int index = in.nextInt();
    System.out.print(numArray[index]);
}

每次运行数组时,都会将输入存储到变量index中。从那里,您尝试在该索引处显示数组中的值。这可能会导致一些问题。

1)你还没有把你的数字放到这个数组中,所以数组中的每个值都是0.要解决这个问题:

numArray[i] = in.nextInt();

2)如果有人输入的数字大于数组的大小,您将获得IndexOutOfBoundsException。我不认为你是这样做的,但这就是你的代码目前正在尝试做的事情。

答案 2 :(得分:0)

有3个问题: -

1)使用i&lt; n从0开始

2)尝试在数组中添加输入值作为索引。

3)在输入时打印出值,这样可以让你更好地在单独的循环中做到这一点,但我把它留给你或者更好地使用println而不是print

试试这个: -

public static void main(String[]args) {
        Scanner in = new Scanner(System.in);

        System.out.println("How many nums would you like to enter? ");
        int n = in.nextInt();
        System.out.println("Enter " + n + " nums");
        int[] numArray = new int[n];

        for(int i = 0; i < n; i++)
        {

           numArray[i] = in.nextInt();
           System.out.println(numArray[i]);
        }

    }

答案 3 :(得分:0)

首先它应该是i<n而不是i<=n,因为n表示数组长度,i表示数组索引。索引从0开始。例如,数组保持值1234,因此长度为4但索引为0,1,2,3。所以索引总是小于数组长度。您还必须使用数组索引存储输入。

for(int i = 0; i < n; i++)
    {

       numArray[i] = in.nextInt();
    }

然后打印出来

for(int i = 0; i < n; i++)
    {

       System.out.println(numArray[i]);
    }
相关问题