为什么我的循环似乎从索引1开始?

时间:2013-10-15 19:42:09

标签: java arrays

public static void main(String args[])
{

    Scanner scan = new Scanner(System.in);
    int n = scan.nextInt();
    String[] label = new String[n];
    int[] data = new int[n];
    int x = 0;

    for(x = 0; x < n*2; x++)
    {
        if (x<n)
        {
            label[x] = scan.nextLine();
        }
        if (x >= n)
        {
            data[x-n] = scan.nextInt();
        }
    }   
    System.out.print(data[0]);
}

当我尝试输入时,例如:

4
一个
2个
3个
四个

我在“四”时收到错误。不应该将这些字符串值放入数组中吗?

1 个答案:

答案 0 :(得分:9)

问题是nextInt不消耗该行 - 只是整数。所以你实际上获得“”,“一”,“两个”和“三个”的标签 - 然后它试图读取“四”作为第一个数据元素({{1 }})。

如果您输入这样的输入:

nextInt

然后您最终会得到4 one two three four 1 2 3 4 的标签数组和{"one", "two", "three", "four"}的数据数组。