在Java中分配变量,而循环是有条件的?
我有一个方法,它执行大量的检查和计算,并返回一个自定义类returnMessage。returnMessage有2个布尔值和一个字符串。我要做的是在我的主类的while循环中运行这个方法,并在while循环最后一次终止后访问returnMessage对象 在php中,这将是一个在Java中分配变量,而循环是有条件的?,java,php,loops,variables,while-loop,Java,Php,Loops,Variables,While Loop,我有一个方法,它执行大量的检查和计算,并返回一个自定义类returnMessage。returnMessage有2个布尔值和一个字符串。我要做的是在我的主类的while循环中运行这个方法,并在while循环最后一次终止后访问returnMessage对象 在php中,这将是一个 while ( $returned = myObject->myMethod()->finished ) { } if( $returned -> finished == FALSE) { ...
while ( $returned = myObject->myMethod()->finished )
{
}
if( $returned -> finished == FALSE)
{
...
}
然而,尝试这样分配会在java中给我一个布尔预期错误(上面可能有php错误,已经晚了:D)这是可能的
while( (returned=myObject.myMethod()).isFinished()){
}
或者更准确地说,
(returned=myObject.myMethod())
将返回的对象分配给returned
,您可以像普通的var一样使用它,我们需要查看更多的代码,但我想这样做可能会奏效:
ReturnMessage returned;
while (!(returned = myObject.myMethod()).finished) {
}
if (!returned.finished) {
}
虽然在PHP中是可以接受的,但我想(我不使用PHP编写代码),在Java中,在条件中执行赋值被认为是非常糟糕的形式。(这是因为它容易出错,很难发现,在许多代码中间,差异在=和= =之间。这是基于C和C++多年经验的慎重选择。)< /P> 事实上,我不能完全理解你的代码。您说“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代码以匹配。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";
}
}
PHP和Java之间的区别在于
而Java中的需要一个布尔型表达式(someVar=boolExpr
本身就是一个布尔型表达式)。如果分配的变量是bool
,则它将是相同的。请显示当前的Java代码,因为很可能正在分配非bool代码。在任何情况下,除了少数例外,我建议不要使用这个习惯用法……它永远不会进入while循环。这真的可以编译吗?我使用的是Java7,语法不正确<代码>行
必须在循环之前定义。@Michael感谢您指出这一点“行”应在循环之前定义,但可以在while条件内初始化。