【问题标题】:Asking user how many names they want to input and storing the names in the array询问用户他们想输入多少个名字并将名字存储在数组中
【发布时间】:2021-06-03 17:05:58
【问题描述】:

这是我假设的初学者问题。所以请原谅我。

我的问题是我希望用户输入他们想要输入的名称的数量。然后,他们将输入名称,我将它们存储在一个数组中并打印出来。但似乎程序在输入姓名的数量后也将“”存储为空白。

例如,如果我输入 3,那么我只能再输入两个。假设输入 3 后,我输入“a”和“b”,程序将打印 ["", "a", "b"]。

如果我要求的是整数,它工作正常。 谢谢。

【问题讨论】:

    标签: java


    【解决方案1】:

    在执行nextInt()后需要额外的nextLine(),否则开头会得到一个空字符。

    这样做:

    import java.util.Scanner;
    import java.util.ArrayList;
    
    public class Main
    {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in); 
            System.out.println("How many names will you insert?");
            int numNames = in.nextInt();
            in.nextLine(); // NEEDS THIS
            ArrayList<String> names = new ArrayList<String>();
            for (int i = 0; i < numNames; i++ ) {
                System.out.println("Enter name " + i+1 + ": ");
                String name = in.nextLine();
                names.add(name);
            }
            System.out.println("Added names:");
            System.out.println(names);
        }
    }
    

    【讨论】:

    • 非常感谢 in.nextLine 完成了这项工作。你能解释为什么它会存储空白字符吗?我只是好奇。只要你知道。没有压力。
    • 不客气。所以你需要在开始之前调用 nextLine 的原因是 nextInt 在第一个非数字字符处停止,这是换行符,所以你需要跳过它。这发生在许多编程语言中,这个链接解释了为什么它发生在 c++ 中:stackoverflow.com/questions/18725522/…
    • 谢谢。好像我不能接受我不知道为什么的答案。一旦检查接受然后刷新页面,它就会返回未选中状态。
    【解决方案2】:

    试试下面的代码,应该可以解决你的问题。

    System.out.println("Enter number of users name you want to enter");
    Scanner sc=new Scanner(System.in);
    List<String> users=new ArrayList<String>();
        
        int user_number=sc.nextInt();
        while(user_number!=0)
        {
            
            System.out.println("Enter user name");
            Scanner sc1=new Scanner(System.in);
            String user=sc1.nextLine();
            users.add(user);
            user_number--;
            
        }
              System.out.println(users);  
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-30
      • 1970-01-01
      • 2023-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多