当我声明标志为false时,为什么while循环会保持循环? 输入正确的输入后,程序应该结束。 任何帮助将不胜感激。 Java新手。 非常感谢大家!
import javax.swing.JOptionPane;
import java.util.*;
public class Project1Chang
{
public static void main(String[] args)
{
String name;
String sex;
int height;
boolean flag = true;
JOptionPane.showMessageDialog (null, "This program calculates tidal volume.", "Tidal Volume Calculator", JOptionPane.INFORMATION_MESSAGE);
name = JOptionPane.showInputDialog("What is your name?");
sex = JOptionPane.showInputDialog("What is your sex?");
while (flag = true)
{
height = Integer.parseInt (JOptionPane.showInputDialog("What is your height? (48-84 inches or 114-213 centimeters) \nEnter whole numbers only."));
if (height <= 84 && height >= 48)
{
if (sex.equalsIgnoreCase("male") || sex.equalsIgnoreCase("m"))
{
double malePbwInch = 50 + 2.3 * (height - 60);
JOptionPane.showMessageDialog(null, malePbwInch);
flag = false;
}
}
else if (height <= 213 && height >= 114)
{
if (sex.equalsIgnoreCase("male") || sex.equalsIgnoreCase("m"))
{
double malePbwCm = 50 + .91 * (height - 152.4);
JOptionPane.showMessageDialog(null, malePbwCm);
flag = false;
}
}
else
{
JOptionPane.showMessageDialog(null, "This is an invalid input. Try again.");
}
}
}
}
答案 0 :(得分:2)
即使是有经验的程序员也会不时犯这样的错误: 您将true指定为flag,因此条件始终为true。 你需要双等于比较运算符
while (flag == true)
或者真的只是
while (flag)
答案 1 :(得分:1)
您正在flag = true
而不是flag == true
。
答案 2 :(得分:1)
正如前面提到的海报一样,您必须使用==
代替=
。
但更优雅的做法是写while(flag)
如果您在循环中只有一个布尔值,则不必检查它是==true
还是==false
,因为布尔值本身包含值true
或false
!
答案 3 :(得分:0)
flag = true应为flag == true
flag = true将true赋给flag并将true返回到while循环
答案 4 :(得分:0)
=运算符为变量赋值。 ==运算符测试变量是否与另一个值相等。
while循环永远不会停止循环,因为循环中的条件始终为true。这是因为您将flag的值赋值为true。
要允许终止循环,请将while (flag = true)
更改为while (flag == true)