该问题需要为每个attribute.Ex输入不同的值:
颜色:黑白
水冷热介质
风强风弱
我做了字符串的ArrayList of ArrayList来存储no这样的东西。在每个属性的值不是下一个,用户输入黑白,在命中新行时,程序必须开始获取下一个属性的值(冷热介质).The no。我在这里遵循了一些(几乎相关的)答案,并编写了以下代码:
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);
}程序打印"Enter Attribute 1:“,但即使在新行之后,它也不会打印"Enter attribute 2:”,.It进入无限循环。我如何才能实现程序所需的功能?sc是我的Scanner对象。
发布于 2015-09-03 17:16:15
您应该阅读以下内容:
http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#nextLine%28%29
具体地说,就是声明:
此方法返回当前行的其余部分,不包括末尾的任何行分隔符
因此,如果用户输入一个只有行分隔符\n的空行,您将看到没有这样的行分隔符的空行。
查看while (!input.isEmpty()),或者更好的while (!input.trim().isEmpty())
作为更一般的规则,您可以调试您的程序(甚至打印input),尝试找出您正在检查的实际值是什么。
发布于 2015-09-03 17:35:14
作为一个速战速决的人,你可以做某事。喜欢
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);
}不是很好,但它是有效的。还请注意字符串连接中的计算。在您的代码中,它将打印01、11、21等等。有了括号,它就可以工作了。
https://stackoverflow.com/questions/32371470
复制相似问题