【java】程序流程控制(顺序、分支、循环、break、continue、return)

顺序结构

程序从上到下逐行的执行。

分支结构

if-else语句

if-else可以嵌套使用
①单分支if结构

public class test {
public static void main(String[] args) {
    int i = 1;
    if(i == 1) {
    	System.out.println(i);
    }
   }
}//只有当i=1时才会输出

②双分支if结构

public class test {
public static void main(String[] args) {
    //判断一个数组是奇数还是偶数,输出结果
	int i = 3;
    if(i % 2 == 0) {
    	System.out.println("偶数");
    }else {
    	System.out.println("奇数");
    }
   }
}

③多分支if结构

public class test {
public static void main(String[] args) {
    //如果是数字1,输出星期一,2输出星期二,3输出星期三
	//如果不是1,2,3中的任何一个数字,就输出不知道星期几
	int i = 4;
    if(i == 1) {
    	System.out.println("星期一");
    }else if(i == 2){
    	System.out.println("星期二");
    }else if(i == 3){
    	System.out.println("星期三");
    }else {
    	System.out.println("不知道星期几");
    }
   }
}

switch语句

switch (表达式) {          //表达式:可以是byte,short,int,char     JDK5以后可以是枚举    JDK7以后可以是字符串
    case 值1:{             //case:后面的值就是要和表达式进行比较的值
        语句块1; [break];  // break:表示程序到这里中断,跳出switch语句
    }
    case 值2:{
        语句块2; [break];
    }
     … … … 
    case 值n:{
        语句块n; [break];
    }
    [default:{
        语句块n+1;         //default:如果所有的情况都不匹配,就执行这里,相当于if语句中的else
    }]
}

注意事项:

  A:case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的
  B:default可以省略吗?
        可以省略,但是不建议,因为它的作用是对不正确的情况给出提示。
  C:break可以省略吗?
        可以省略,但是结果可能不是我们想要的。
        会出现一个现象:case穿透。
        最终我们建议不要省略
  D:default一定要在最后吗?
        不是,可以在任意位置。但是建议在最后。
  E:switch语句的结束条件
        a:遇到break就结束了
        b:执行到末尾就结束了

例子:

public class test {
public static void main(String[] args) {
    //如果是数字1,输出星期一,2输出星期二,3输出星期三
	//如果不是1,2,3中的任何一个数字,就输出不知道星期几
	int i = 3;
	switch(i) {
	case 1:
		System.out.println("星期一");
		break;
	case 2:
		System.out.println("星期二");
		break;
	case 3:
		System.out.println("星期三");
		break;
	default:
		System.out.println("不知道星期几");
		break;
	}
  }
}

使用switch把小写类型的char型转为大写。只转换a,b,c,d,e.其他的输出"other"。

public class test {
public static void main(String[] args) {
	char i = 'a';
	switch(i) {
	case 'a':
		System.out.println("A");
		break;
	case 'b':
		System.out.println("B");
		break;
	case 'c':
		System.out.println("C");
		break;
	case 'd':
		System.out.println("D");
		break;
	case 'e':
		System.out.println("E");
		break;
	default:
		System.out.println("other");
		break;
	}
  }
}

循环结构

在某些条件满足的情况下,反复执行特定代码功能

三种循环的区别

    a:do...while循环至少执行一次循环体
    b:for和while必须先判断条件是否是true,然后后才能决定是否执行循环体 
    c:for适合于一个范围的判断
        while适合次数不明确的

for循环

格式:

for(初始化语句;判断条件语句;控制条件语句){ 
	循环体语句; 
}

例子1:连续输出5次hello world

public class test {
public static void main(String[] args) {
    for(int i=0;i<5;i++) {
    	System.out.println("hello world");
	}
  }
}

例子2:编写程序,从1循环到150并在每行打印一个值,另外在每个3的倍数行上打印输出"foo",在每个5的倍数行上打印输出"biz",在每个7的倍数行上打印输出"baz"。
样式如下:
在这里插入图片描述
… …
在这里插入图片描述
自己写的代码如下:

public class test {
public static void main(String[] args) {
    for(int i=1;i<=150;i++) {
    	System.out.print(i);
    	if(i % 3 == 0 && i % 5 == 0 && i % 7 == 0) {
    		System.out.println(" foo"+" biz"+" baz");
    	}
    	else if(i % 3 == 0 && i % 5 == 0) {
    		System.out.println(" foo"+" biz");
    	}
    	else if(i % 3 == 0 && i % 7 == 0) {
    		System.out.println(" foo"+" baz");
    	}
    	else if(i % 5 == 0 && i % 7 == 0) {
    		System.out.println(" biz"+" baz");
    	}
    	else if(i % 3 == 0) {
    		System.out.println(" foo");
    	}
    	else if(i % 5 == 0) {
    		System.out.println(" biz");
    	}
    	else if(i % 7 == 0) {
    		System.out.println(" baz");
    	}
    	else {
    		System.out.print("\n");
    	}
	}
  }
}

网课上老师讲的代码如下:
灵活的运用了字符串的拼接,减少了代码的复杂度

public class test {
public static void main(String[] args) {
    for(int i=1;i<=150;i++) {
    	String str = "";
    	str += i;
    	if(i % 3 == 0) {
    		str += " foo";
    	}
    	if(i % 5 == 0) {
    		str += " biz";
    	}
    	if(i % 7 == 0) {
    		str += " baz";
    	}
    	System.out.println(str);
	}
  }
}

例子3:打印1~100之间所有奇数的和。

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

结果如下:
在这里插入图片描述

例子4:打印1~100之间所有是7的倍数的整数的个数及总和。

public class test {
	public static void main(String[] args) {
		int m=0; 
		int n=0; 
		for(int i=1;i<=100;i++) { 
			if(i % 7 == 0) { 
				m ++; 
				n += i; 
			} 
		}
		System.out.println("个数:"+m); 
		System.out.println("总和:"+n);
	}
}

结果如下:
在这里插入图片描述
例子5:输出所有的水仙花数,所谓水仙花数是指一个三位数,其各个位上数字立方和等于其本身。
例如:153=1 * 1 * 1 + 3 * 3 * 3 + 5 * 5 * 5

public class test {
	public static void main(String[] args) {
		for(int i=100;i<1000;i++) { 
			int m=i/100;      //百位
			int n=(i/10)%10;  //十位
			int t=i%10;       //个位
			if(i == m*m*m + n*n*n + t*t*t) {
				System.out.println(i);
			}
		}
	}
}

结果如下:
在这里插入图片描述

while循环

while(判断条件语句) {
            循环体语句;
}

例1:循环输出1~100的数字

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

do/while循环

例1:循环输出1~100的数字

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

练习1、打印1~100之间所有偶数的和。

用for循环写

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

结果如下:
在这里插入图片描述
用while循环写:

public class test {
public static void main(String[] args) {
	int m=0;
	int i=1;
	while(i<=100) {
    	if(i % 2 == 0) {
    		m += i;
    	}
    	i++;
	}
    System.out.println(m);
  }
}

for循环的无限循环:

for(;;){}

while循环的无限循环

while(true){}

嵌套循环

例1、输出九九乘法表

public class test {
public static void main(String[] args) {
    for(int i = 1; i <= 9; i++) {
    	for(int j = 1; j <= i; j++) {
    		System.out.print(i + " * " + j + " = " + (i * j) + "  ");
    	}
    	System.out.println();
    }
  }
}

在这里插入图片描述

例2、输出1~100之间的所有质数
思路:比如7,用7循环1到之间的数分别取模,看能整除的次数,如果整除的次数只有2次,那可以判断是一个质数。

public class test {
public static void main(String[] args) {
    for(int i = 1; i <= 100; i++) {
    	int k=0;  //整除的次数
    	for(int j = 1; j <= i; j++) {
    		if(i % j == 0) {
    			k++;
    		}
    	}
    	if(k == 2) {
    		System.out.print(i+" ");
    	}
    }
  }
}

在这里插入图片描述

特殊流程控制语句

break语句

break是终止(跳出)当前所在的循环
以下两个例子来理解:

public class test {
public static void main(String[] args) {
    for(int i = 0; i < 3; i++) {
    	for(int j = 0; j < 8; j++) {
    		if(j >2) {
    			break;
    		}
    		System.out.print(j+" ");
    	}
    }
  }
}

此时输出情况为3次0 1 2
在这里插入图片描述

public class test {
public static void main(String[] args) {
    for(int i = 0; i < 3; i++) {
    	for(int j = 0; j < 8; j++) {
    		if(j >2) {
    			break;
    		}
    		System.out.print(j+" ");
    	}
    	break;
    }
  }
}

此时仅输出 0 1 2
在这里插入图片描述
使用break语句输出10以内的素数

public class test {
public static void main(String[] args) {
	for(int i = 2; i < 10; i++) {
		int j;
		for(j = 2; j < i; j++) {
			if(i % j == 0) {
				break;
			}
		}
		if(j >= i) {
			System.out.print(i+" ");
		}
	}
  }
}

在这里插入图片描述

continue语句

continue是结束当前这次循环,直接进入下一次循环
结合以下例子来理解

public class test {
public static void main(String[] args) {
    for(int i = 0; i < 9; i++) {
    	if(i % 2 == 0) {
    		continue;
    	}
    	System.out.print(i+" ");
    }
  }
}

在这里插入图片描述

return语句

return用于结束方法,一旦遇到return,程序就不会在继续往后执行。

break只能跳出当前循环(单层),而return可以跳出双层循环。

以下例子对比break的第一个例子

public class test {
public static void main(String[] args) {
    for(int i = 0; i < 3; i++) {
    	for(int j = 0; j < 8; j++) {
    		if(j >2) {
    			return;
    		}
    		System.out.print(j+" ");
    	}
    }
  }
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值