我没有想到,它说要一直做一件事情,就真的一直在做一件事情。我在旁边看着,new了两个对象,开了四个线程,算了几道数学题。当整个主进程快要结束的时候,我想我该停止了。在我要停止的时候,我把算好的数学题答案留给了它。我记得我的父类曾经说过,如果主进程得不到正确的答案,就会抛出异常。像它这么工整的主函数,答案应该非常漂亮才对。——《重庆森林》
所以,啥叫流程控制呢?你看王家卫,整部电影看着像是流水账一般,但也充满了编程的智慧。
我昨天遇到一个人,感觉他非常有意思,印象深刻。但后来就再也碰不上了,人生就是这样——《一代宗师》。
为啥他再也遇不上这个人了?因为这是个for循环啊。i==1 的循环结束了,就再也不可能i==1了。
好了,以上都是开个玩笑。因为这部分内容太基础太枯燥了,活跃一下气氛。
到底啥是流程控制呢?其实就是字面意思了,java中(所有编程语言中)都会用几个固定的语法逻辑,来把一连串流水账一般的代码,组织出来一个逻辑,谁先执行啦,谁后执行啦,谁一直执行啦,遇到什么样的条件执行什么样的代码了。就像小孩子要做选择一样(成年人我都要),程序的生命周期,也会做各种认为设定好的选择,这些内容,就叫流程控制。
if else
遇到不一样的条件,执行不一样的代码
if(条件1){ //如果满足条件1,执行表达式1,后面的都不执行了
表达式1;
}else if(条件2){//如果满足条件2,执行表达式2,后面的都不执行了
表达式2;
}else{//如果上面都不满足,执行表达式3
表达式3;
}
if else表达式可以多层嵌套,一定要做好对应关系
if else判断的条件是布尔类型
switch
也是遇到什么样的条件,执行什么样的代码,很多情况下,和if else可以互换,但语法结构式有些许差别。
判断条件(case后)是常量值。判断表达式可以是(byte、short、char、int、String、枚举类型)
switch (表达式){
case 常量表达式1: //如果表达式 == 常量表达式1 执行语句1 后面不执行
语句1;
break;
case 常量表达式2://如果表达式 == 常量表达式2 执行语句2 后面不执行
语句2;
break;
default:
语句3; //如果表达式 既不满足1 也不满足2 执行语句3
}
jdk7.0之后,常量表达式可以是整形,字符型,字符串等类型
package com.imooc;
import java.util.Scanner;
public class SwitchDemo {
public static void main(String[] args) {
System.out.println("请输入星期:");
Scanner sc = new Scanner(System.in);
String week = sc.next().toLowerCase();
switch (week) {
case "monday":
System.out.println("星期一");
break;
case "tuesday":
System.out.println("星期二");
break;
case "wednesday":
System.out.println("星期三");
break;
case "thursday":
System.out.println("星期四");
break;
case "friday":
System.out.println("星期五");
break;
case "saturday":
System.out.println("星期六");
break;
case "sunday":
System.out.println("星期天");
break;
default:
System.out.println("输入错误");
}
}
}
while
while(循环条件){//先判断条件,后执行循环体
语句;//如果循环条件为 true,就一直循环执行 语句;
}
do-while
do{//先执行语句,在判断循环条件是否为true,如果true,在执行下一轮,如果为false,就停止
语句;
}while(循环条件);
至少会被执行一次
for
for(表达式1;表达式2;表达式3){ //表达式1:循环条件初始化,表达式2:循环条件判断,表达式3:循环条件改变
语句;
}
for(int n = 1;n<=5;n++) {
sum+=n;
}
System.out.println(sum);
表达式1只执行1次,之后是表达式2,之后是循环体,之后是表达式3.。。。。。。
案例
求阶乘
1!+2!+3!。。。+10!
int s = 1;
int sum = 0;
for(int i=1;i<=10;i++) {
for(int j=1;j<=i;j++) {
s=s*j;
}
sum = sum+s;
s = 1;
}
System.out.println(sum);
判断闰年
需求:求闰年
能被4整除但不能被100整除的年份,或者能被400整除的年份。就是闰年
package com.imooc;
import java.util.Scanner;
//判断一个年份是否为闰年
public class LeapYearDemo {
public static void main(String[] args) {
System.out.println("请输入年份:");
Scanner sc = new Scanner(System.in);
int year = sc.nextInt();
//闰年判断规则:能被4整除,但不能被100整除;或者能被400整除
if(((year%4==0)&(year%100!=0))|(year%400==0)) {
System.out.println(year+"是闰年");
}else {
System.out.println(year+"不是闰年");
}
}
}
九九乘法表
public class ChengFaBiao {
//九九乘法表
public static void main(String[] args) {
for (int i=1;i<=9;i++){
for (int j=1;j<=i;j++){
System.out.print(j+"*"+i+"="+i*j+"\t");
}
System.out.println();
}
}
}
break|continue
-
break
结束
当前循环的执行,跳出本层循环或者结束
switchbreak也可以在多重循环中跳到指定循环
for(){ ii: for(){ jj: break ii: } } -
continue
结束本次循环,继续下一次循环