我在java中有以下代码,它接受用户的输入。它基本上是一个简单的数据库系统。
ArrayList<String> commands = new ArrayList<String>();
ArrayList<ArrayList<String>> blocks = new ArrayList<ArrayList<String>>();
ArrayList<String> list = new ArrayList<String>();
System.out.println("Enter the transaction commands.\n");
Scanner scan = new Scanner(System.in);
while(!(line = scan.nextLine()).toLowerCase().equals("end"))
{
commands.add(line);
}
for(String com : commands)
{
String split[] = com.split(" ");
if(!split[0].toLowerCase().equals("get") && !split[0].toLowerCase().equals("numequalto") && !split[0].toLowerCase().equals("rollback") && !split[0].toLowerCase().equals("commit"))
{
if(split[0].toLowerCase().equals("begin"))
{
if(!list.isEmpty())
{
blocks.add(list);
System.out.println(blocks.get(0));
list.clear();
}
else
{
continue;
}
}
else
{
list.add(com);
continue;
}
}
}
System.out.println(blocks.get(0));
我为这个程序提供的输入是:
set a 10
set b 20
begin
get a
get b
end
虽然预期的输出是:
[set a 10, set b 20]
[set a 10, set b 20]
我得到的输出为:
[set a 10, set b 20]
[]
问题似乎是ArrayList> blocks的值似乎被覆盖了。最后一个 print 语句将值打印为一个空的 ArrayList。我找不到错误的确切来源。任何帮助找出错误将不胜感激。