I understand the flow of the following code but do not understand how the syntax System.out.print(s + (b ? "T" : "F")); resolves to a proper conditional expression especially since the (b ? "T" : "F") part of the expression is never assigned to a variable but appended to one - s.
package testPackage;
public class EBH204 {
static boolean m1(String s, boolean b) {
System.out.println(" ");
System.out.println("just entered m1");
System.out.println("b before conditional operation " + b);
System.out.println("s before conditional operation " + s);
System.out.println(" ");
System.out.print(s + (b ? "T" : "F"));
System.out.println(" ");
System.out.println("b after conditional operation " + b);
System.out.println("s after conditional operation = " + s);
return b;
}
public static void main(String[] args) {
System.out.println("just entered main");
m1("A", m1("B",false) || m1 ("C", true) || m1("D",false));
//System.out.println(" A and B " + (m1("A", m1("B",false))));
System.out.println(" A and B and C " + (m1("A", m1("B",false) || m1 ("C", true))));
System.out.println("just executed m .... in main");
}
}
Output:
just entered main
just entered m1
b before conditional operation false
s before conditional operation B
BF
b after conditional operation false
s after conditional operation = B
just entered m1
b before conditional operation true
s before conditional operation C
CT
b after conditional operation true
s after conditional operation = C
just entered m1
b before conditional operation true
s before conditional operation A
AT
b after conditional operation true
s after conditional operation = A
just entered m1
b before conditional operation false
s before conditional operation B
BF
b after conditional operation false
s after conditional operation = B
just entered m1
b before conditional operation true
s before conditional operation C
CT
b after conditional operation true
s after conditional operation = C
just entered m1
b before conditional operation true
s before conditional operation A
AT
b after conditional operation true
s after conditional operation = A
A and B and C true
just executed m .... in main
Can someone advise me?
Thanks,
JerryB
package testPackage;
public class EBH204 {
static boolean m1(String s, boolean b) {
System.out.println(" ");
System.out.println("just entered m1");
System.out.println("b before conditional operation " + b);
System.out.println("s before conditional operation " + s);
System.out.println(" ");
System.out.print(s + (b ? "T" : "F"));
System.out.println(" ");
System.out.println("b after conditional operation " + b);
System.out.println("s after conditional operation = " + s);
return b;
}
public static void main(String[] args) {
System.out.println("just entered main");
m1("A", m1("B",false) || m1 ("C", true) || m1("D",false));
//System.out.println(" A and B " + (m1("A", m1("B",false))));
System.out.println(" A and B and C " + (m1("A", m1("B",false) || m1 ("C", true))));
System.out.println("just executed m .... in main");
}
}
Output:
just entered main
just entered m1
b before conditional operation false
s before conditional operation B
BF
b after conditional operation false
s after conditional operation = B
just entered m1
b before conditional operation true
s before conditional operation C
CT
b after conditional operation true
s after conditional operation = C
just entered m1
b before conditional operation true
s before conditional operation A
AT
b after conditional operation true
s after conditional operation = A
just entered m1
b before conditional operation false
s before conditional operation B
BF
b after conditional operation false
s after conditional operation = B
just entered m1
b before conditional operation true
s before conditional operation C
CT
b after conditional operation true
s after conditional operation = C
just entered m1
b before conditional operation true
s before conditional operation A
AT
b after conditional operation true
s after conditional operation = A
A and B and C true
just executed m .... in main
Can someone advise me?
Thanks,
JerryB