这是代码:
Scanner in = new Scanner(System.in);
ArrayList<Integer> list = new ArrayList<>();
if (in.next().equals("create")) {
int n = Integer.parseInt(in.next());
for (int i = 1; i <= n; i++) {
list.add(i);
if (list.size() == n){
break;
}
}
}
while (!in.next().equals("printList")){
String [] arr = in.nextLine().split(" ");
if (arr[0].equals("add")){
if (arr.length == 3){
int a = Integer.parseInt("arr[1]");
list.add(a);
}
}
System.out.println(list);
}
我正在解决一个列表处理问题。在我的例子中,首先给出单词 create 和数字 N(例如 10)作为输入。在代码的第一部分,我用从 1 到 10 的数字填充列表列表。这里没有问题。接下来,我尝试创建一个数组 arr ,该数组应填充以下输入:单词“add”和一个数字。由于某种原因,只有一个数字进入数组,但“add”命令没有进入它。我该怎么做才能将单词放入数组中?
以防万一,我附上问题的条件,以便更清楚我最后需要做什么: * ArrayList 类有许多方法: add (n) - 最后插入, add (i, n) - 按索引插入,remove (i) - 按索引删除,set(i, n) - 按索引更改值。
该程序接收字符串作为输入,其中第一个创建 N - 创建一个初始列表,其中包含从 1 到 N 的数字。其他命令的签名:
add 5 - 在列表末尾插入 5
add 5 6 - 在索引 5 处插入 6
remove 7 - 从列表中删除元素 7
set 7 3 - 将列表的第七个元素的值替换为 3
printList 命令 - 表示数据输入结束,并应显示所有操作后获得的列表 *
输入示例:
create 30
add 12
add 17
add 3 15
remove 4
set 12 34
printList
第一个错误:
当你应该写 arr.length == 2 时你写了 arr.length == 3 (你在这里实现了追加,对吧?)。
第二,严重错误:
注意下面的表达式: !in.next().equals("printList")
我们从队列中取出下一个元素,并将其与字符串“printList”进行比较。事实上,在字符串“add 2”的情况下,我们从队列中拉出字符串“add”。出于某种原因,我们不会将此行保存在任何地方。因此,有了这个条目,如果我们打印 arr 变量的内容,我们将得到一个单独的元素“2”。而这一切都是因为“添加”没有留在队列中。
解决方案:您只需要创建一个字符串数组,我们将在其中接受表达式中的新行,然后将其第一个元素与字符串“printList”进行比较: