java - 在 while 循环中将字符串和整数添加到不同的 ArrayList

标签 java arraylist while-loop

我被困在一个练习中,我应该获取一个单词和数字(用空格分隔),然后将它们放入一个 ArrayList(数字和名称的不同列表)中。

例如,如果我写“Jordan 19”,则名称 Jordan 应放入名为“listNames”的 ArrayList 中,而数字 19 应放入名为“listNumbers”的 ArrayList 中。

如果输入字母“q”,则 while 循环应该被中断。 我遇到的问题是,当我尝试从 ArrayList 中获取名称和号码时,我只得到一个空行和输入的号码。即 ArrayList 对于数字有效,但对于名称无效。

可能出了什么问题? 感谢您的帮助!

ArrayList<String> listNames = new ArrayList<String>();
ArrayList<Integer> listNumbers = new ArrayList<Integer>();

Scanner in = new Scanner(System.in);
System.out.println("Write a name and number (separate with blankspace), end with 'q'");

boolean go = true;
while (go) {
    String full = in.nextLine();
    if (in.next().equals("q")) {
        go = false;
    }
    int len = full.length();
    int blank = full.indexOf(" ");

    String nameString = full.substring(0, blank);
    String numberString = full.substring(blank + 1, len);
    int number = Integer.parseInt(numberString);

    listNames.add(nameString);
    listNumbers.add(number);
}

System.out.println(listNames.get(1));
System.out.println(listNumbers.get(1));

最佳答案

我认为你的逻辑应该是从扫描仪读取整个输入行。然后,进行完整性检查以确保它只有两个由空格分隔的术语。如果是这样,则将单词和数字分配给各自的数组。

System.out.println("Write a name and number (separate with blankspace), end with 'q'");
while (true) {
    String full = in.nextLine();
    if ("q".equals(full)) {
        break;
    }

    String[] parts = full.split("\\s+");
    if (parts.length != 2) {
        // you could also just break here as well, but throwing an exception
        // is something you might actually do in a production code base
        throw new IllegalArgumentException("Wrong number of input terms; use 2 only");
    }

    listNames.add(parts[0]);
    listNumbers.add(Integer.parseInt(parts[1]));
}

关于java - 在 while 循环中将字符串和整数添加到不同的 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54362292/

相关文章:

Java-如何在换行前显示数字 5 次

java - 为 Hadoop 作业指定 UTF-8 编码

Java从main方法之外的方法引用ArrayList

php循环解决方案

java - Java 中的简单 OpenID

java - 无法打印 txt 文件中所有数字的总和

java - 顺序 ArrayList 可序列化

java - 未从文件中正确读取值

java - 循环和/或 if else 双返回

c# - 虽然循环使 Unity 崩溃,但不是无限的