2

我在String从用户输入数据填充数组时遇到问题。这是我的问题的一个简单示例:

import java.util.Scanner;

public class TestArray {
    public static void main(String[] args){

        Scanner input = new Scanner(System.in);

        System.out.println("Enter a number between 1 and 5");
        int number = input.nextInt();    

        System.out.println("Now enter " + number +  " names");    
        String names = input.next();

        String[] nameList = new String[number];

        for(int i = 0; i < number; i++){
            nameList[i] = input.next();
            System.out.println(nameList[i]);
        }
    }
}     

我不知道为什么这只是打印出输入的姓氏。我最终要寻找的是打印出每个名字。我也尝试过使用input.nextLine()which 不起作用。

任何提示或指示将不胜感激。

4

5 回答 5

3

输入名称后只需一个单独的循环即可将它们全部打印出来:

import java.util.Scanner;

public class TestArray {
    public static void main(String[] args){

        Scanner input = new Scanner(System.in);

        System.out.println("Enter a number between 1 and 5");
        int number = input.nextInt();    

        System.out.println("Now enter " + number +  " names");    
        //NOTE:  You may want to remove this line since it will mess up your data.
        //String names = input.next();

        String[] nameList = new String[number];

        for(int i = 0; i < number; i++){
            nameList[i] = input.next();
        }

        //print separate here.
        System.out.println("Here are the names you entered:  ");
        for(int i = 0; i<number; i++){
            System.out.println(nameList[i]);
        }
    }
} 
于 2013-10-18T18:34:12.697 回答
0

目的是什么

String names = input.next();

?

您根本不使用names,并且因为它而在数字之后捕获下一个输入。

如果你删除它应该可以工作......

于 2013-10-18T18:28:41.110 回答
0

Your first input.next() call (after the prompt, "Now enter X names") is skewing your data. Just remove it.

public class TestArray {
    public static void main(String[] args){

       Scanner input = new Scanner(System.in);

       System.out.println("Enter a number between 1 and 5");
       int number = input.nextInt();    

       System.out.println("Now enter " + number +  " names");

       String[] nameList = new String[number];

        for(int i = 0; i < number; i++){
            nameList[i] = input.next();
            System.out.println(nameList[i]);
        }
    }
}
于 2013-10-18T18:30:36.680 回答
0

线

 String names = input.next();

导致你的问题。如果你把它拿出来,程序就会按照你描述的那样运行。或者,您可以在一个循环中填充您的数组,然后在打印它们之后循环遍历列表。这取决于您到底要做什么。

 import java.util.Scanner;

 public class test{
  public static void main(String[] args){

      Scanner input = new Scanner(System.in);

      System.out.println("Enter a number between 1 and 5");
      int number = input.nextInt();    

      System.out.println("Now enter " + number +  " names");      
      //String names = input.next();

      String[] nameList = new String[number];

       for(int i = 0; i < number; i++){
                    nameList[i] = input.next();
          System.out.println(nameList[i]);
    }    
  }
}
于 2013-10-18T18:31:41.107 回答
0

输入整数后,光标一直在直线上等待,当我们输入字符串后跟 int 时,“\n”将被视为字符串之一...为了避免这个问题,只需在输入中使用该换行符即可。 nextLine() 紧接在整数输入之后和字符串输入之前的行。

于 2022-02-02T18:44:35.847 回答