gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 09:54:20 25 4
gpt4 key购买 nike

我被困在一个练习中,我应该获取一个单词和数字(用空格分隔),然后将它们放入一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com