0

我的扫描仪和 nextLine 有问题。发生的情况是它跳过了循环的第一圈。我的猜测是扫描仪已经在这里包含了一些东西,比如换行符之类的。如果我对 strCount 和循环中的一个使用两种不同的扫描仪,它确实有效。这是正确的吗?如果是,有什么方法可以在不使用两个不同扫描仪的情况下完成这项工作。

import java.util.*;

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

    System.out.print("Number of strings?");
    int strCount = key.nextInt();
    String [] array = new String[strCount];

    for(int x = 0; x < strCount; x++){

        System.out.print("String "+(x+1)+":");
        array[x] = key.nextLine();

    }
}

}

输入/输出示例:

串数?8

字符串 1:字符串 2:

从这里输入任何字符串都可以正常工作,它只会在循环中跳转 1 步以获取下一个。

4

1 回答 1

4

问题是Scanner.nextInt()不消耗行终止符。nextLine()在进入循环之前做一个额外的事情。

于 2013-03-29T19:14:11.943 回答