Java语言基础-05-流程控制语句

167 阅读4分钟

我没有想到,它说要一直做一件事情,就真的一直在做一件事情。我在旁边看着,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  后面不执行
		语句1breakcase 常量表达式2//如果表达式 == 常量表达式2  执行语句2  后面不执行
		语句2breakdefault:
		语句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

    结束当前循环的执行,跳出本层循环

    或者结束switch

    break也可以在多重循环中跳到指定循环

    for(){
            ii:
            for(){
                jj:
                break ii:
            }
    }
    
  • continue
    结束本次循环,继续下一次循环