java操作String类型的arraylist
我遇到了一个问题,给我带来了很多麻烦,我甚至不知道该怎么办。这是到目前为止的作业和我的代码
使用存储和处理名称的ArrayList创建系统。 使用标准输入不断提示用户进行以下操作
Enter command or quit:
(如果他们输入quit--quit程序)
命令:
add <name>
:将字符串<name>
添加到ArrayList李>change <name> <newName>
:更改ArrayList中 有<name>
到<newName>
李>delete <name>
:删除Arraylist中的所有{}项李> print
:打印ArrayList李>amount
:显示ArrayList中项目的数量李>
系统必须工作。。。并有正确的错误消息
import java.util.*;
public class NameManipulation {
static Scanner console = new Scanner(System.in);
public static void main(String[] args) {
System.out.println("enter a command, or quit!");
ArrayList<String> names = new ArrayList<String>();
String command = console.next();
int size = names.size();
for (String x = null; size; x++) {
if (command == "add") {
String assignment = console.next();
names.add(assignment);
}
if (command == "change") {
String newname = console.next();
names.set(names.size, newname);
}
if (command == "delete") {
String delete = console.next();
if (delete == names)
;
names.remove();
}
if (command == "print") {
System.out.println(names);
}
if (command == "amount") {
amount = (names.size - 1);
System.out.println(amount);
}
if (command == "quit") {
System.out.println("You just quit!");
break;
} else
System.out.println("command not found!");
System.out.println(names);
}
}
}
# 1 楼答案
如果我试图完成这项任务,我会使用列表,而不是数组列表。我希望这个方法有用!这是C代码。我不知道确切的Java语法,但它似乎有很多相似之处。我希望这种方法有帮助
# 2 楼答案
您可以尝试使用一个开关块,它可以将您的控制语句流化。如上所述,学习何时使用==和何时使用。等于()。一个比较引用(==)另一个比较内存位置,重要的是字符串是一个对象,当你创建一个新字符串时,它比较的是地址而不是值(如果我错了,请原谅)
# 3 楼答案
不要使用
==
(在测试引用相等的Java中);你想测试对象值是否相等(我建议不区分大小写),所以你想使用String.equalsIgnoreCase,你可能应该在其他测试中使用else if
——例如而且,这是错误的
我想你想要
# 4 楼答案
看看这个,它似乎有很多问题
在for循环中,您将字符串初始化为null,然后尝试递增它(x++)。我不认为这是合法的语法。此外,for循环条件设置为size,它最初将等于0。我必须对其进行测试,但0的计算结果可能为false,这意味着循环永远不会执行
无论如何,您都不需要for循环,可能是一个do-while循环,它会一直运行到命令等于“quit”
do{}while(!command.equals("quit"));
你应该使用。equals()而不是Elliot Frisch提到的“==”。此外,忽略大小写也很好,您应该使用else if
在change命令中,您应该解析出两个参数——要替换的名称和新名称,然后执行替换。现在,第一个参数是名称。大小,我认为它将超出列表的范围(
names.size() - 1
应该是最后一个元素)。相反,你应该得到你要替换的名字的索引根据ArrayList的Java toString实现,它可能会很好地打印出名称,或者类似于“@ArrayList Object”——我认为Java有一个很好的ArrayList toString方法,所以这可能会起作用
关于打印量,你应该使用
names.size()
而不是names.size() - 1
(因为names.size() - 1
会给你比列表中实际少一个项目)