问题需要为每个属性输入不同的值.Ex:
颜色黑色白色
水冷热媒
风强弱
我创建了String的ArrayList的ArrayList来存储no之类的东西。每个属性的值都不固定。用户输入Black White,在点击新行时,程序必须开始取NEXT属性值(Cool Hot Medium)。已经指定了属性。我在这里遵循了一些(几乎相关的)答案,并编写了以下代码:
ArrayList<ArrayList<String>> attributes = new ArrayList<ArrayList<String>>();
String input;
for(i=0; i<num_of_Attributes ;i++)
{ System.out.print(" Enter attribute no." + i+1 + " : ");
ArrayList<String> list = new ArrayList<String>();
while(! input.equals("\n"))
{
list.add(input);
input = sc.nextLine();
}
attributes.add(list);
}
该程序打印“输入属性1:”,但即使在换行后它也不会打印“输入属性2:”。它会进入无限循环。我怎样才能达到程序要求的目的? sc是我的扫描仪对象。
答案 0 :(得分:0)
你应该阅读:
http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#nextLine%28%29
具体说明:
此方法返回当前行的其余部分,不包括末尾的任何行分隔符
因此,如果用户仅使用行分隔符\n
输入空行,您将读取没有此行分隔符的空行。
检查while (!input.isEmpty())
或更好的while (!input.trim().isEmpty())
作为一般规则,您可以调试程序(甚至只是打印input
)以试图找出您正在检查的实际值。
答案 1 :(得分:0)
作为快速黑客,你可以做某事。像
for (i = 0; i < num_of_Attributes; i++) {
input = " ";
System.out.print(" Enter attribute no." + (i + 1) + " : ");
ArrayList<String> list = new ArrayList<String>();
while (!input.isEmpty()) {
list.add(input);
input = sc.readLine();
}
attributes.add(list);
}
不好但是有效。请注意在String concaternation中计算。在您的代码中,它将打印01,11,21等。用括号可以工作。