Java程序逻辑控制

发布于2020-03-31   1060 次阅读


本文最后更新于2022年6月1日,已超过 1 年没更新!内容可能已失效,请自行测试。

顺序结构

程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的

代码案例-顺序结构

/*顺序结构,从上往下*/
public class OrderDemo {
public static void main(String[] args) {
	System.out.println("语句1");
	System.out.println("语句2");
	System.out.println("语句3");
	System.out.println("语句4");
}
}

IF分支结构

代码案例-IF语句格式1

/*
 *  IF语句格式1
 * if(关系表达式) {
 * 			语句体;
 * 		}
执行流程:
 * 		A:首先判断关系表达式看其结果是true还是false
 * 		B:如果是true,就执行语句体
 * 		C:如果是false,就不执行语句体

 * */
public class IfDemo {
public static void main(String[] args) {
	System.out.println("开始");
	// 定义两个变量
	int a = 10;
	int b = 20;

	if (a == b) {
		System.out.println("a等于b");
	}

	int c = 10;
	if (a == c) {
		System.out.println("a等于c");
	}

	System.out.println("结束");
	
}
}

代码案例-IF语句格式2

/*
 * if语句格式2:
 * 		if(关系表达式) {
 * 			语句体1;
 * 		}else {
 * 			语句体2;
 * 		}
 * 
 * 执行流程:
 * 		A:判断关系表达式的值是true还是false
 * 		B:如果是true,就执行语句体1
 * 		C:如果是false,就执行语句体2
 */

public class IfDemo2 {
	public static void main(String[] args) {
		System.out.println("开始");
		int a = 10;
		int b = 10;
		if (a == b) {
			System.out.println("a和b相等");
		} else {
			System.out.println("a和b不相等");
		}
	}
}

代码案例-IF语句格式3

package IF;
/*
 * if语句格式3:
 * 		if(关系表达式1) {
 * 			语句体1;
 * 		}else if(关系表达式2) {
 * 			语句体2;
 * 		}else if(关系表达式3) {
 * 			语句体3;
 * 		}
 * 		...
 * 		else {
 * 			语句体n+1;
 * 		}
 *
 * 执行流程:
 * 		A:首先判断关系表达式1看其结果是true还是false
 * 		B:如果是true,就执行语句体1
 * 		     如果是false,就继续进行关系表达式2的判断看其结果是true还是false
 * 		C:如果是true,就执行语句体2
 * 		   如果是false,就继续进行关系表达式...的判断看其结果是true还是false
 * 		...
 * 		D:如果没有一个为true的,就执行语句体n+1
 *
 * if语句的三种格式:
 * 		第一种格式适合做一种情况的判断
 * 		第二种格式适合做二种情况的判断
 * 		第三种格式适合做多种情况的判断
 */

public class IfDemo3 {
  public static void main(String[] args) {
    int x = 10;
    int y;
    if (x >= 3) {
      y = 2 * x + 1;
    } else if (x >= -1 && x < 3) {
      y = 2 * x;
    } else {
      y = 2 * x - 1;
    }
    System.out.println(y);
  }
}

SWITCH开关语句

案例代码-switch语句格式

package Switch;

/*
 * switch语句格式:
 * switch(表达式) {
 * 		case 值1:
 * 			语句体1;
 * 			break;
 * 		case 值2:
 * 			语句体2;
 * 			break;
 * 		...
 * 		default:
 * 			语句体n+1;
 * 			break;
 * }
 * 格式解释:
 * 		表达式:byte,short,int,char
 * 		JDK5以后可以是枚举
 * 		JDK7以后可以是字符串
 * 		case:就是要和表达式进行比较的值
 * 		break:表示中断,结束的意思。
 * 		default:表示所有的情况都不匹配的时候,就执行语句体n+1。和if语句的else相似。
 * 执行流程:
 * 		A:计算出表达式的值
 * 		B:拿计算出来的值和case后面的值依次比较,一旦有对应的值,就执行该处的语句,在执行过程中,遇到 break,就结束。
 * 		C:如果所有的case都不匹配,就会执行default控制的语句,然后结束。
 */

public class SwitchDemo {
  public static void main(String[] args) {
    int a = 5;
    switch (a) {
      case 1:
        System.out.println("星期1");
        break;
      case 2:
        System.out.println("星期2");
        break;
      case 3:
        System.out.println("星期3");
        break;
      case 4:
        System.out.println("星期4");
        break;
      case 5:
        System.out.println("星期5");
        break;
      case 6:
        System.out.println("星期6");
        break;
      default:
        System.out.println("星期日");
        break;
    }
  }
}

WHILE循环

代码案例-while循环格式

package While;

/*
 * while循环语句的基本格式:
 * 		while(判断条件语句) {
 * 			循环体语句;
 * 		}
 * 扩展格式:
 * 		初始化语句;
 * 		while(判断条件语句) {
 * 			循环体语句;
 * 			控制条件语句;
 * 		}
 *
 */

public class WhileDemo {
  public static void main(String[] args) {
    // 输出10次HelloWorld
    int x = 10;
    while (x >= 1) {
      System.out.println("HelloWorld");
      x--;
    }
  }
}

代码案例-while循环练习

package Switch;

/*
 * 求1-100之和。
 */

public class WhileDemo {
  public static void main(String[] args) {
    int i = 1;
    int sum = 0;
    while (i <= 100) {
      sum = sum + i;
      i++;
    }
    System.out.println("SUM=" + sum);
  }
}

案例代码-do--while格式

package Switch;

/*
 * do...while循环的基本格式:
 * 		do {
 * 			循环体语句;
 * 		}while(判断条件语句);
 * 扩展格式:
 * 		初始化语句;
 * 		do {
 * 			循环体语句;
 * 			控制条件语句;
 * 		}while(判断条件语句);
 * 执行流程:
 * 		A:执行初始化语句;
 * 		B:执行循环体语句;
 * 		C:执行控制条件语句;
 * 		D:执行判断条件语句,看是true还是false
 * 			如果是true,回到B继续
 * 			如果是false,就结束
 *
 */

public class DoWhileDemo {
  public static void main(String[] args) {
    int i = 1;
    int sum = 0;
    do {
      sum = sum + i;
      i++;
    } while (i <= 100);
    System.out.println(sum);
  }
}

FOR循环

案例代码-for循环格式

package For;

/*
 * for循环语句格式:
 * 		for(初始化语句;判断条件语句;控制条件语句) {
 * 			循环体语句;
 * 		}
 *
 * 		执行流程:
 * 			A:执行初始化语句
 * 			B:执行判断条件语句,看结果是true还是false
 * 				如果是true,就继续执行
 * 				如果是false,就结束循环
 * 			C:执行循环体语句
 * 			D:执行控制条件语句
 * 			E:回到B继续
 *
 * 需求:
 * 		在控制台输出10次”HelloWorld”的案例。
 */
public class ForDemo {
  public static void main(String[] args) {
    for (int i = 1; i <= 10; i++) {
      System.out.println("HELLO WORLD!");
    }
  }
}

代码案例-for循环练习1

package For;

/*
 * 需求:获取数据1-5和5-1
 */

public class ForDemo2 {
  public static void main(String[] args) {
    // 1-5
    for (int i = 1; i < 6; i++) {
      System.out.println(i);
    }
    System.out.println("-----------");
    // 5-1
    for (int i = 5; i >= 1; i--) {
      System.out.println(i);
    }
  }
}

代码案例-for循环练习2

package For;

/*
 * 需求:求出1-5之间数据之和
 */

public class ForDemo3 {
  public static void main(String[] args) {
    int sum = 0;
    for (int i = 1; i <= 5; i++) {
      sum = sum + i;
    }
    System.out.println("SUM=" + sum);
  }
}

代码案例-for循环练习3

package For;

/*
 * 需求:求出1-100之间偶数和
 */

public class ForDemo4 {
  public static void main(String[] args) {
    int sum = 0;
    for (int i = 1; i <= 100; i++) {
      if (i % 2 == 0) {
        sum = sum + i;
      }
    }
    System.out.println("SUM=" + sum);
  }
}

代码案例-for循环练习4

package For;

/*
 * 需求:在控制台输出所有的”水仙花数”
 * 分析:
 * 		什么是水仙花数呢?
 * 			所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身。
 *			举例:153就是一个水仙花数。
 *			153 = 1*1*1 + 5*5*5 + 3*3*3
 *
 */

public class ForDemo5 {
  public static void main(String[] args) {
    for (int i = 100; i < 1000; i++) {
      int ge = i % 10;
      int shi = i / 10 % 10;
      int bai = i / 10 / 10 % 10;
      if (i == (ge * ge * ge + shi * shi * shi + bai * bai * bai)) {
        System.out.println(i);
      }
    }
  }
}

三种循环的区别

do…while循环至少会执行一次循环体。

for循环语句和while循环语句的小区别: 控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,而while循环结束还可以继续使用,如果你想继续使用,就用while,否则推荐使用for。原因是for循环结束,该变量就从内存中消失,能够提高内存的使用效率

循环控制

代码案例-break的使用

package Control;

/*
 * break:中断的意思
 * 使用场景:
 * 		A:switch语句中
 * 		B:循环中
 * 注意:
 * 		离开使用场景是没有意义的。
 * 作用:
 * 		跳出循环,让循环提前结束
 */

public class BreakDemo {
  public static void main(String[] args) {
    for (int x = 1; x <= 10; x++) {
      if (x == 3) {
        break;
      }
      System.out.println("HelloWorld");
    }
  }
}

代码案例-continue的使用

package Control;

/*
 * continue:继续的意思
 * 使用场景:
 * 		循环中
 * 注意:
 * 		离开使用场景是没有意义的
 * 作用:
 * 		结束一次循环,继续下一次的循环
 * 区别:
 * 		break:退出循环
 * 		continue:结束一次循环,继续下一次的循环
 */

public class ContinueDemo {
  public static void main(String[] args) {
    for (int x = 1; x <= 10; x++) {
      if (x == 3) {
        continue;
      }
      System.out.println(x);
    }
  }
}

循环嵌套

在一个循环语句之中嵌套其它的循环语句就称为循环嵌套处理,循环嵌套层次越多,时间复杂度越高

案例代码-打印乘法口诀表

package TimeTables;

public class Demo {
  public static void main(String[] args) {
    int sum;
    for (int x = 1; x <= 9; x++) {
      for (int y = 1; y <= x; y++) {
        sum = x * y;
        System.out.print(y + "x" + x + "=" + sum + "\t");
      }
      System.out.println();
    }
  }
}

案例代码-打印三角形

package TimeTables;

public class Demo2 {
  public static void main(String[] args) {
    int line = 5;
    for (int x = 0; x < line; x++) {
      for (int y = 0; y < line - x; y++) {
        System.out.print(" ");
      }
      for (int y = 0; y <= x; y++) {
        System.out.print("* ");
      }
      System.out.println();
    }
  }
}

=

一沙一世界,一花一天堂。君掌盛无边,刹那成永恒。