20

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

在php中,这将是一种情况

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

}

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

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

4

4 回答 4

48

我们需要查看更多您的代码,但稍微猜测一下,我认为这样的事情会起作用:

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

}
if (!returned.finished) {

}
于 2012-04-21T23:54:20.117 回答
7

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";
    }
}
于 2018-07-08T02:55:43.997 回答
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 代码以匹配。

于 2012-04-22T05:25:15.940 回答
1

这是可能的

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

}

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

于 2012-04-21T23:54:00.407 回答