在Java while循环条件中分配变量?

时间:2012-04-21 23:48:51

标签: java loops variables while-loop

我有一个方法可以进行大量的检查和计算,并返回一个自定义类returnMessage。 returnMessage有2个布尔值和一个String。我想要做的是在我的主类的while循环中运行此方法,并在while循环最后一次终止后访问returnMessage对象。

在php中,这将是

的情况
while ( $returned = myObject->myMethod()->finished )
{

}

if( $returned -> finished == FALSE)
{
...
}

然而尝试像这样分配给我一个布尔预期的错误java(上面可能有php错误,它已经很晚了:D)

4 个答案:

答案 0 :(得分:34)

我们需要看到更多你的代码,但猜测一下我觉得这样的东西会起作用:

ReturnMessage returned;
while (!(returned = myObject.myMethod()).finished) {

}
if (!returned.finished) {

}

答案 1 :(得分:4)

while循环检查条件。这是另一个可以派上用场的例子:

public class test {
    public static void main(String[] args) {
        String line;
        while((line = readFromFile())!=null){
//do something with var 'line'
            System.out.println(line);
            break;
        }
    }

    static String readFromFile(){
       return "test string";
    }
}

答案 2 :(得分:3)

虽然在PHP中可以接受,但我猜(我不用PHP编写代码),在Java中的条件内进行赋值被认为是非常糟糕的形式。 (这是因为它容易出错并且很难发现,在很多代码的中间区别是=和==。这是基于多年C和C ++经验的深思熟虑的选择。)

实际上,我无法完全遵循您的代码。你说“returnMessage有2个布尔值和一个字符串”,但我在PHP中理解的测试是myObject->myMethod()->finished != null,而returned被设置为finished的值,但是你去了并测试与$returned -> finished相同的myObject->myMethod()->finished->finished。对不起,如果我误解了PHP语法。

Java中的一般建议更多的是:

ReturnMessage returned = myObject.myMethod().getFinished();
while (returned != null) { 

    ...

    returned = myObject.myMethod().getFinished(); // or did you mean myObject.myMethod();   
}

if (!returned.finished) { // or, better: if (!returned.isFinished())
    ...
}

如果我误解了PHP,请告诉我,我将修复与之匹配的Java代码。

答案 3 :(得分:1)

这可能是这样的

while( (returned=myObject.myMethod()).isFinished()){

}

或者更准确(returned=myObject.myMethod())将返回的对象分配给returned,您可以像普通var一样使用它