【问题标题】:How to create, populate, and print a string array in Java如何在 Java 中创建、填充和打印字符串数组
【发布时间】:2013-10-18 18:21:36
【问题描述】:

我在从用户输入数据填充 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(),但没有成功。

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

【问题讨论】:

  • 这不是完整的代码。
  • names 变量有什么意义,为什么它会消耗第一个 input.next()
  • @RohitJain 它只缺少三个右括号....
  • 对我来说很好,只需删除声明 names 变量的行。
  • 请原谅我没有把右括号放在我上面的代码中,我认为这会被理解。无论如何,当名称变量被删除时,这确实有效,但是,它们在每次输入后打印。我希望在用户全部输入后一次性打印出来。

标签: java arrays


【解决方案1】:

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

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]);
        }
    }
} 

【讨论】:

    【解决方案2】:

    目的是什么

    String names = input.next();
    

    ?

    您根本不使用names,因此正在捕获数字之后的下一个输入。

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

    【讨论】:

    • 是的,我对此有逻辑错误。我很欣赏你的回应。当我删除它时它确实有效,只是不是我想要的方式,但我应该从这里开始。
    【解决方案3】:

    您的第一个 input.next() 呼叫(在提示“现在输入 X 名称”之后)正在扭曲您的数据。只需将其删除。

    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]);
            }
        }
    }
    

    【讨论】:

      【解决方案4】:

      线

       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]);
          }    
        }
      }
      

      【讨论】:

      • 感谢汤姆的替代解决方案。
      【解决方案5】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-09-28
        • 2012-06-27
        • 1970-01-01
        • 2017-11-15
        • 1970-01-01
        • 2021-09-21
        • 1970-01-01
        相关资源
        最近更新 更多