我得到了以下代码:

int nnames;
String names[];

System.out.print("How many names are you going to save: ");
Scanner in = new Scanner(System.in);
nnames = in.nextInt();
names = new String[nnames];

for (int i = 0; i < names.length; i++){
  System.out.print("Type a name: ");
  names[i] = in.nextLine();
}

和输出该代码如下:

How many names are you going to save:3 
Type a name: Type a name: John Doe
Type a name: John Lennon

注意它跳过第一名称条目?它跳过它,并直奔第二个名称项。我试图寻找是什么原因造成这一点,但我似乎并没有能够打钉。我希望有一个人可以帮助我。感谢

有帮助吗?

解决方案

的原因的错误是nextInt仅拉动整数,不换行。如果您之前添加in.nextLine()的for循环,它会吃空的新生产线,并允许你进入3名。

int nnames;
String names[];

System.out.print("How many names are you going to save: ");
Scanner in = new Scanner(System.in);
nnames = in.nextInt();

names = new String[nnames];
in.nextLine();
for (int i = 0; i < names.length; i++){
        System.out.print("Type a name: ");
        names[i] = in.nextLine();
}

或刚刚读取的行和解析值看作整数。

int nnames;
String names[];

System.out.print("How many names are you going to save: ");
Scanner in = new Scanner(System.in);
nnames = Integer.parseInt(in.nextLine().trim());

names = new String[nnames];
for (int i = 0; i < names.length; i++){
        System.out.print("Type a name: ");
        names[i] = in.nextLine();
}

其他提示

使用sc.nextLine();两个时间,使我们可以阅读字符串的最后一行

sc.nextLine() sc.nextLine()

这是因为in.nextInt()不改变线。所以,你先在你的循环“输入”(按3之后)导致()你in.nextLine读取行尾。

下面一个小的变化,你可以这样做:

int nnames;
    String names[];

    System.out.print("How many names are you going to save: ");
    Scanner in = new Scanner(System.in);
    nnames = Integer.parseInt(in.nextLine());
    names = new String[nnames];

    for (int i = 0; i < names.length; i++){
            System.out.print("Type a name: ");
            names[i] = in.nextLine();
    }

这是因为in.nextInt()只接收一个INT数,没有接收到新的一行。所以你输入3和按“Enter”,线的端部由in.nextline读()。

下面是我的代码:

int nnames;
String names[];

System.out.print("How many names are you going to save: ");
Scanner in = new Scanner(System.in);
nnames = in.nextInt();
in.nextLine();
names = new String[nnames];

for (int i = 0; i < names.length; i++){
        System.out.print("Type a name: ");
        names[i] = in.nextLine();
}

您可以简单替换

names[i] = in.nextLine();names[i] = in.next();

使用next()将只返回一个空间之前会发生什么。 nextLine()返回当前行之后自动移动向下扫描器

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top