Java:如果声明不起作用?

时间:2016-03-02 15:27:24

标签: java

下面的Awnsers工作了,谢谢你们!

boolean Again = true;
while (Again = true) 
{
    String input = JOptionPane.showInputDialog(null, "Input Za Number");
    try 
    {
        int input2 = Integer.parseInt(input);
        int R1 = 1;
        int R2 = 1;
        while (R2 < input2)
        {
            R1 = R1 * 2;
            R2 = R2 + 1;
            JOptionPane.showMessageDialog(null, R1);
        }
        String Ag = JOptionPane.showInputDialog(null, "Do it again? (Y/N)");
        if (Ag.equals("N"))
        {
            Again = false;
        }
    }
    catch(Exception e)
    {
        JOptionPane.showMessageDialog(null, "What is  '" + input + "'?!?! Enter an actual number.");  
    }
}

我把那些不起作用的部分放在我希望的粗体中。它是&#34; if(Ag.equals(&#34; N&#34;))&#34;。我试图这样做,如果用户输入&#34; N&#34;,那么程序将停止运行。否则它将循环并继续前进。问题是,即使我键入N,它也会循环。我没有错。请帮忙,我很困惑:(

2 个答案:

答案 0 :(得分:4)

这是为什么专业开发人员将始终使用

的一个主要示例
if ( null == object )

if ( object == null )

如果输入错误,例如以下

// as posted
while ( Again = true ) // works, always true

// the other way
while ( true = Again ) // compiler error

每次重复循环时,发布的方式是将值 true 重新分配给再次;如果语句是用另一种方式编写的,编译器会抛出一个错误,说明你不能为 true 赋值。

只使用单个等号,每次到达此处时,您都会将 Again 的值重新分配给 true ,其中double等于检查是否相等。

在这种情况下,你真的不需要true,你可以简单地使用

while ( Again )
// or again
while ( true == Again )

relevant

答案 1 :(得分:2)

当您执行类似

的操作时
while (Again = true) 

您实际上是将变量分配给true

让你的无限 ......

改为

 while (Again)  // since is boolean you dont need to compare against a true value..