【发布时间】:2012-07-10 03:55:11
【问题描述】:
我正在尝试将 3 个不同的变量输入到 while 循环内的数组中,只要我没有为任何变量输入停止。如果第一个变量没有停止,while循环只假设让我输入第二个变量值,同样输入第三个变量值
现在,第一个循环运行良好,我可以输入所有 3 个变量,但第二次和第三次,for 循环输出第一个变量,但在跳到第二个变量之前不允许我输入值. 例如我的意思:
姓名:afasdf
额外信息:afdsaf
单价:123123214
名称:额外信息:adflskjflk 此外,输入 Stop 也不会结束循环
单价:123217
我知道这个循环在只有一个变量的情况下有效,我尝试使用 for 循环而不是 while 循环,并添加了大量的 else 语句,但它似乎保持不变
我设置断路器的方式有问题吗? 我设置最后一个断路器的方式(即使我为双变量设置 stop 也会停止)是否会弄乱 hte 循环的其余部分?
非常感谢
这是我的代码
ArrayItem s = new ArrayItem();
String Name = null, ID = null;
double Money = 0;
boolean breaker = false;
while(breaker ==false)
{
System.out.print("Name:" + "\t");
Name = Input.nextLine();
if(Name.equals("Stop")) //see if the program should stop
breaker = true;
System.out.print("Extra Info:" + "\t");
Details = Input.nextLine();
if(ID.equals("Stop"))
breaker = true;
System.out.print("Unit Cost:" + "\t");
Money = Input.nextDouble();
// suppose to let me stop even if i input stop
// when the variable is suppose to be a double
if(Input.equals("stop") || Input.equals("stop"))
breaker = true;
else
s.SetNames(Name);
s.SetInfo(Details);
s.SetCost(Money);
}
【问题讨论】:
-
在 if 和 else 主体周围使用方括号 (
{ })。例如,底部的 else 语句只执行s.SetNames(Name),并且始终执行s.SetInfo(Details)和s.SetCost(Money)。最后,查看break关键字,它将立即以其最基本的形式退出其包含循环。if (Input ...) { breaker = true; } else { s.SetNames(Name); s.SetInfo(Details); s.SetCost(Money); }(在代码中使用空行分隔)。 -
我添加了括号,但我仍然遇到同样的问题
-
if(Input.equals("stop") || Input.equals("stop"))我看你不要冒险。 -
我的妄想症不起作用 =.= 输入 Stop 仍然不会停止 while 循环
-
好吧,在这种情况下,至少您是在
Input本身上调用equals,这可能是Scanner,而不是String。