java数组使用扫描仪

时间:2014-11-19 12:58:26

标签: java arrays

在我的程序中,我想使用Scanner显示数组,即用户在运行时输入数组值。

public class NameComparator {
    public static void main(String args[]) {
        Scanner sn = new Scanner(System.in);
        int n = sn.nextInt();
        System.out.println("the array size is" + n);
        int[] a = new int[7];
        for (int i = 0; i >= a.length; i++) {
            a[i] = sn.nextInt();
            System.out.println("the value of a[i]" + a[i]);
        }
        sn.close();
        System.out.println("array values are");
    }
}

在这里,我从Scanner获得了数组大小,然后使用for循环来获取每个数组值,但我不知道为什么数组块没有被执行。 JVM只是跳过for循环。 Scanner效果很好

5 个答案:

答案 0 :(得分:1)

几乎没有问题:

int[] a= new int[7];//<-- why hard coded?
int[] a= new int[n];// try, you already have array size from user

for(int i=0;i>=a.length;i++)//<-- condition fails, i is 0 for the first time
for(int i=0; i < a.length; i++)//try this

答案 1 :(得分:1)

此:

for(int i=0;i>=a.length;i++)

应该是:

for (int i = 0; i < a.length; i++)

只要i小于a.length(即数组的大小),就要循环。 如果终止条件返回false,则将退出(或跳过)for循环。由于您使用i初始化0i>=a.length(即0 >= 7)将立即false

请注意,我写过i < a.length而不是i <= a.length。数组大小当前设置为7,因此有效索引从06。如果您尝试访问索引ArrayIndexOutOfBoundsException,则会获得7

您忘记使用变量n来设置数组大小:

int[] a= new int[n];

答案 2 :(得分:1)

仔细查看你的for循环。

for(int i=0;i>=a.length;i++)

请注意,您使用的是大于号。

由于i等于0,a的长度必须为0才能运行此循环,并且我们已经知道您声明a的长度为7。 / p>

答案 3 :(得分:1)

更改以下代码

for(int i=0;i>=a.length;i++) with for(int i=0;i<a.length;i++)

条件应为<而不是>= 使用sn.hasNext()也可以简化解决方案。

答案 4 :(得分:1)

我会做一些搜索,因为有很多类似的问题。

无论如何,你有一些不正确的事情。您提示用户输入数组大小,然后将其丢弃并改为使用7:

    int[] a= new int[7];

所以,这应该是:

    int[] a= new int[n];

第二,你的循环条件:

for(int i=0;i>=a.length;i++)

只要i 大于a,,只要a是正整数(因为我从零开始),它就永远不会发生。因此,如果我们使用的是less,我们还应该记住数组是零索引的,所以如果你输入一个值3,你只想填充索引0,1和2.

所以,这应该是:

for(int i=0;i < a.length;i++)

最后,记得提示用户,即使这只是一个学习练习,这是一个很好的做法。把它们放在一起,你会得到这样的东西:

    public static void main(String args[])
    {
    Scanner sn=new Scanner(System.in);
    System.out.println("Please enter an array size:" );
    int n=sn.nextInt();
    System.out.println("the array size is "+ n);
    int[] a= new int[n];
    System.out.println("Please enter your " + n + "array values:");
    for(int i=0;i < a.length;i++)
    {
        a[i]= sn.nextInt();
        System.out.println("The value of a[" + i  + "] is "  +  a[i]);
    }
    sn.close();

    System.out.println("Array values are " );
    for (int arrayValue : a)
        System.out.println("    " + arrayValue);

}