逻辑改写形式(不能改逻辑改了程序就变了)
疑惑点1---if else的嵌套:
改写1-【内层固定,外层判断】:当遇到两个条件都需要判断的时候,实际上外层的条件判断优先于内层,因为只有满足外层才考虑内层,否则,直接按外层不满足考虑。
改写2-【外层固定,内层判断】:直接对外层情况分类讨论即可,内层直接跟上。
解决方法:
直接从最后一个else往上对if,可以看清逻辑。
public static void main(String[] args) {
System.out.println("*a=false***btrue*******");
boolean a,b;
a=false;
btrue(a);
b=true;
test(a,b);
System.out.println("**a=true;*********");
a=true;
btrue(a);
b=true;
test(a,b);
System.out.println("****bfalse*******");
a=false;
bfalse(a);
b=false;
test(a,b);
System.out.println("*a=true;**********");
a=true;
bfalse(a);
test(a,b);
/*
*a=false***btrue*******
B
B
**a=true;**btrue*******
a+B
a+B
**a=false**bfalse*******
B
B
*a=true;*bfalse**********
a-B
*/
}
private static void test(boolean a,boolean b) {
if(true==a){
if(true==b)
{
System.out.println("a+B");
}else{
System.out.println("a-B");
}
}else
System.out.println("B");
}
private static void btrue(boolean a) {
boolean b;
b=true;
if(true==a)
{
System.out.println("a+B");
}else{
System.out.println("B");
}
}
private static void bfalse(boolean a) {
boolean b;
b=false;
if(true==a)
{
System.out.println("a-B");
}else{
System.out.println("B");
}
}
疑惑点2---else if和if else使用场景:
结论:
//两个条件判断最多3个出口
if ( ){
情形1;
}else{if( ){
情形2;
}else{
情形3;
}
}
等价于
if( ){
情形1;
}else if( ){
情形2;
}else{
情形3;
}
}
public static void testqianzhi(Boolean a,Boolean b){
if(a==true){
System.out.println("a is true,not care b");
}else{
if(b==true){
System.out.println("a is false,b is true");
}else{
System.out.println("a is false,b is false");
}
}
}
public static void testqianzhi2(Boolean a,Boolean b){
if(a==true){
System.out.println("a is true,not care b");
}else if(b==true){
System.out.println("a is false,b is true");
}else{
System.out.println("a is false,b is false");
}
}
public static void testhouzhi(Boolean a,Boolean b){
if(a==false){
if(b==true){
System.out.println("a is false,b is true");
}else{
System.out.println("a is false,b is false");
}
}else {
System.out.println("a is true,not care b");
}
}
public static void main(String[] args) {
Boolean a,b;
a=false;
b=false;
testhouzhi(a,b);
testqianzhi(a,b);
testqianzhi2(a,b);
}
//输出结果:
a is false,b is false
a is false,b is false
a is false,b is false