结构语句

  • 流程控制语句
  • 循环语句
  • while循环
  • for循环实例一
  • for循环实例二
  • 跳出多重循环
  • do...while循环
  • 循环的应用场景
  • 选择结构语句


流程控制语句

流程控制语句

if(条件){
				true执行体;
		}else if(条件){
			true执行体;
		}else if(条件){
			true执行体;
		}else{
				执行体;
		}
		1.else if 可以有0-N个
		2.else 可以有0-1个
		3.所有分支仅仅只会执行一个
public static void main(String[] args) {
		int a = 1;
		int b = 2;
		if (a == b ) {
			System.out.println("1等于2");
		}else {
			System.out.println("1不等于2");//1不等于2
		}
	}

循环语句

1.while(conditions) {
		block;
	}
2.for(初始条件;conditions;增量){
		block;
}

用于可迭代对象迭代的增强for循环
for (元素类型 x : 可迭代对象){
	System.out.println(x);
}

3.do{
	block;
}while(conditions);
和while的区别,这个do。。while中的循环体代码会无条件执行一次,再判断是否循环

while循环

public class Ran {
	public static void main(String[] args) {
		int	a = 10;
		double d = 11.0;
		while(a < d) {//判断是否循环的条件
			System.out.println("ss");//ss
			a +=1;//增量,没有跳出循环的条件会造成死循环
		}
	}
}

for循环实例一

//九九乘法表——for循环嵌套
public class Ran {
	public static void main(String[] args) {
		for(int i = 1; i < 10; i++){
			for(int y = 1 ; y <= i ; y ++) {	
				System.out.print(i + " * " + y + " = " + (((i * y) / 10 < 1) ? i * y + " " : i * y) + "  ");
				//print 不换行,在一行输出当前乘法表
			}
			System.out.println();//换行
			//print 不换行  println	换行
		}
		
		//三元运算符 ((i * y) / 10 < 1) ? i * y + " " : i * y
		//对于乘积的结果为个位数的后接一个空字符串作为占位
		//以此和2位数的结果乘积做对齐
		
	}
}

java 结构体效果 java结构语句_for循环

for循环实例二

//求十万以内的素数 (效率)
//素数:除了1和自身外没有其它的因数, 因数 * 因数 = 积
		for(int i = 3; i < 100000 ; i += 2) {//偶数都能被2整除,一定不是素数,所以素数一定是奇数,i的增量为2
			if (i > 10 && (i % 3 == 0 || i % 5 == 0 || i % 7 == 0)) {
				//大于10的数中,偶数和3,5,7的倍数一定不是素数
				continue;
			}
			for(int j = 3 ; j < (int)(Math.sqrt ((double)i) ) ; j += 2){
			// j作为被除数, j += 2 ; 奇数 / 偶数一定是除不尽的
			//如果一个数i是素数的话,它一定是一个奇数,它除以小于自身的任何数(除1以外)得到的都不是一个整数
			
			//i 除以 偶数 得到的一定不是一个整数
			//i 除以 奇数 得到的 如果也不是一个整数,那么这个数i一定是素数
			//所以只需要将奇数作为除数即可
				if (i % j == 0) { //将i对j进行取余,结果为0说明i不是素数,反之就一定是素数
					break;
				}  
			}
			System.out.println(i);//打印10万以内的这个素数
		}

跳出多重循环

//方式一 利用异常来终止多重循环
	try {
			for (int i = 0; i < 4; i++) {
				for (int j = 0; j < 5; j++) {
					System.out.println("i=" + i + "; j=" + j);
					if (j == 3) {
						throw new Exception();
					}
				}
			}
		} catch (Exception e) {
			System.out.println("e")
	}

	//方式二 给多重循环添加一个标记
	x: for (String[] i : list) {
			for (String j : i) {
				if (j == "a") {
					break x;
				} else {
					System.out.println(j);
				}

			}

do…while循环

int	a = 10;
		double d = 11.0;
		do {
			System.out.println("ss");//ss
			a +=1;
			System.out.println(a);//11
		}while(a < d);

循环的应用场景

for适合于一个精确范围内的循环判断,while适合次数不明确的循环

break:结束最近的循环
	continue:结束本次循环,进入下一次循环
	配合循环使用

选择结构语句

switch(表达式){
		case 常量1:
				block;
				break;
		case 常量2:
				block;
				break;
		case 常量3:
				block;
				break;
		default:
				block;
				break;
}

case后面的值就是要和表达式的值进行比较,相同就执行block,遇到break结束整个switch
都不相同执行default下的block,然后break
break:表示程序到这里终止,跳出switch语句
case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的
default可以没有
表达式的值可以是byte,short,int,char
JDK5以后可以是枚举
JDK7以后可以是字符串

import java.util.Scanner;
public class Ran {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		
		System.out.println("请输入成绩评分A-E");
		if (scan.hasNext()) {
			 
			switch (scan.next()) {
			case "A":
				System.out.println("优秀");
				break;
			case "B":
				System.out.println("良好");
				break;
			case "C":
				System.out.println("及格");
				break;
			case "D":
				System.out.println("不及格");
				break;
			case "E":
				System.out.println("差");
				break;
			default:
				System.out.println("输入错误!");
				break;
			}
		}
	}
	
}

如果case中没有break,会发生case穿透,代码会继续执行下去,不会结束switch,直至遇到break为止

if (scan.hasNextInt()) {
			 
			switch (scan.nextInt()) {
			case 1:
			case 2:
			case 3:
			case 4:
			case 5:
				System.out.println("今天是工作日");
				break;
			case 6:
			case 7:
				System.out.println("今天是休息日");
				break;
			default:
				System.out.println("输入错误!");
				break;
			}
		}