I have a method that does a lot of checking and computation and returns a custom class, returnMessage. returnMessage has 2 booleans and a String. What I want to do is run this method in a while loop from my main class and have access to the returnMessage object after the while loop terminates for the last time. In php this would be a case of
while ( $returned = myObject->myMethod()->finished ) < >if( $returned -> finished == FALSE)
However trying to assign like this gives me a boolean expected error in java (there might be php errors in the above, it's late :D )
235k 37 37 gold badges 317 317 silver badges 388 388 bronze badges asked Apr 21, 2012 at 23:48 1,890 5 5 gold badges 32 32 silver badges 63 63 bronze badgesThe difference between PHP and Java here is that while in Java requires a boolean-typed expression ( someVar = boolExpr is itself a boolean-typed expression). If the variable assigned was a bool then it would be identical. Please show the current Java code as it is likely that something of non-bool is being assigned. In any case, with few exceptions, I would recommend not using this idiom.
– user166390 Commented Apr 22, 2012 at 0:00We need to see more of your code, but guessing a little I think something like this would work:
ReturnMessage returned; while (!(returned = myObject.myMethod()).finished) < >if (!returned.finished)answered Apr 21, 2012 at 23:54 Óscar López Óscar López 235k 37 37 gold badges 317 317 silver badges 388 388 bronze badges
A while loop checks a conditional. Here's another example that can come handy:
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"; >>
answered Jul 8, 2018 at 2:55
358 3 3 silver badges 5 5 bronze badges
Does this actually compile? I'm using Java 7 and the syntax is incorrect. line must be defined before the loop.
Commented Aug 13, 2018 at 15:03@Michael Thanks for pointing this out. 'line' should be defined before the loop but can be initialised inside the while condition.
Commented Aug 14, 2018 at 22:05While acceptable in PHP, I guess (I don't code in PHP), it is considered extremely bad form to do an assignment within a conditional in Java. (This is because it is error prone and very hard to spot, the difference being between = and == in the middle of a lot of code. This was a deliberate choice based on years of experience with C and C++.)
As it is, I can't quite follow your code. You say "returnMessage has 2 booleans and a String" but the test, as I understand it in PHP, is myObject->myMethod()->finished != null and returned gets set to the value of finished , but then you go and test $returned -> finished which is the same as myObject->myMethod()->finished->finished . Sorry if I misunderstand PHP syntax.
The general recommendation in Java would be more along the lines of:
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()) . >
If I misunderstood the PHP, let me know and I'll fix the Java code to match.