JavaSE(三)--选择结构与循环结构

选择结构与循环结构

  • 1.变量的比较
  • 2.Java中三种结构:
  • 3.基本if选择结构:
    • 3.1:语法:
    • 3.2:执行流程:
  • 4.if-else结构:
    • 4.1:语法:
    • 4.2:执行流程:
  • 5.多重if选择结构:
    • 5.1:语法:
    • 5.2:执行流程:
    • 5.3:多重if结构特点:
  • 6.嵌套选择结构:
  • 7.switch选择结构:
    • 7.1:语法:
    • 7.2:执行流程:
    • 7.3:结构特点:
  • 8.switch VS 多重if
    • 8.1:相同点:
    • 8.2:不同点:
  • 9.局部变量:
  • 10.循环结构
    • 10.1.循环结构组成部分
    • 10.3 while循环:
      • 10.3.1:语法:
      • 10.3.2:循环执行流程:
      • 10.3.3:执行特点:
    • 11.do-while循环:
      • 11.1:语法:循环初始值;
      • 11.2:执行流程:
      • 11.3:结构特点:
    • 12.for循环:
      • 12.1:语法:
      • 12.2:执行流程:
      • 12.3:结构特点:
  • 13.for VS do-while VS while的不同点
    • 13.1:适用场景不同:
    • 13.2:能用do-while循环解决的问题都可以用for循环和while循环解决.
  • 14.嵌套循环结构:
  • 15.break
    • 15.1:break第一种用法:
    • 15.2:break第二种用法:作标记
  • 16.continue

1.变量的比较

  • 基本数据类型(byte,short,int,long,float,double,char,boolean)的变量,用==表比较.
  • 引用数据类型(String)的变量,用字符串1.equals(字符串2)表比较.
	eg:int num11=6;
		int num12=6;
		boolean result1=num11==num12;
		System.out.println("两个数的比较结果为:"+result1);
		
		String s1="我是学生";
		String s2="我是学生";
		boolean result2=s1.equals(s2);
		System.out.println("两个字符串的比较结果为:"+result2);

2.Java中三种结构:

  • 顺序结构.
  • 选择结构.
  • 循环结构.

3.基本if选择结构:

有一种情况,满足就执行,没满足什么都不做.

3.1:语法:

if(布尔表达式){
		代码块;
	}

3.2:执行流程:

如果if后面小括号的布尔表达式为true,就执行大括号中代码块,否则就不执行.

	eg://第一步:导包
import java.util.Scanner; 

//基本if选择结构的使用

public class IfTest{
	/**
	*程序的入口方法
	*/
	public static void main(String[] args){
		//第二步:获得具有从键盘上接收数据的能力
		Scanner input=new Scanner(System.in);
		//给用户提示
		System.out.println("上课时是否有手机响了(y(是)/其他字母表示否):");
		//第三步:接收从键盘上的输入,并将输入的值赋值给变量
		String answer=input.next();
		
		if(answer.equals("y")){
			System.out.println("下课时又有人给我们发红包了");
		}
	}
}

4.if-else结构:

两种情况,无论如何都要执行其中一种.

4.1:语法:

if(布尔表达式){
			代码块1;
		}else{
			代码块2;
		}

4.2:执行流程:

  • 如果布尔表达式的结果为true,就执行代码块1;
  • 如果布尔表达式的结果为false,就执行代码块2;
		eg:public static void main(String[] args){
		//第二步:获得具有从键盘上接收数据的能力
		Scanner input=new Scanner(System.in);
		//给用户提示
		System.out.println("晨考是否考好(y(是)/其他字母表示否):");
		//第三步:接收从键盘上的输入,并将输入的值赋值给变量
		String answer=input.next();
		
		if(answer.equals("y")){
			System.out.println("老师请吃饭");
		}else{
			System.out.println("罚抄10遍");
		}
   }

5.多重if选择结构:

有两种及两种以上情况.

5.1:语法:

	if(布尔表达式1){
				代码块1;
			}else if(布尔表达式2){
				代码块2;
			}else if(布尔表达式3){
				代码块3;
			}else{
				else代码块;
			}

5.2:执行流程:

  • 如果布尔表达式1为true,就执行代码块1,执行完之后,执行结构后面的语句;
  • 如果布尔表达式1为false,就接着判断布尔表达式2,布尔表达式2为true,就执行代码块2,执行完之后,执行结构后面的语句;
  • 如果布尔表达式2为false,就接着判断布尔表达式3,布尔表达式3为true,就代码块3,执行完之后,执行结构后面的语句;
  • 如果上面的条件都不满足才会执行else代码块.

5.3:多重if结构特点:

  • 1:在多重if结构中,if有且仅有一个;else if至少有一个,也可以有多个;else有0个或1个.
  • 2:在多重if结构中,最多执行一个分支(一种情况),至少一个分支都不执行(当布尔表达式都为false,且没有else时).
  • 3:在多重if结构中,如果是范围判断问题,如果条件有部分省略没写,那么我们范围从上到下,要么从小范围写到大范围,要么从大范围写到小范围,分支之间不可随便换位置,否则逻辑执行有问题.
    如果范围判断问题,条件写全了,那么分支之间互换位置是没有关系,不 影响结果;
  • 4:在多重if结构中,如果是等值判断问题,分支之间互换位置,不影响结果.
//eg:
public static void main(String[] args){
		//第二步:获得具有从键盘上接收数据的能力
		Scanner input=new Scanner(System.in);
		//给用户提示
		System.out.println("请输入你银行存款:");
		//第三步:接收从键盘上的输入,并将输入的值赋值给变量
		double money=input.nextDouble();
		
		//java中不支持 1001000){
			System.out.println("买兰博基尼");
		}else if(money>10&&money<=100){
			System.out.println("买五凌红光");
		}else if(money>100&&money<=1000){
			System.out.println("买宝马");
		}else{
			System.out.println("买自行车");
		}
	}

6.嵌套选择结构:

在选择结构的大括号中(代码块中)完整嵌套另一个选择结构.
注意: 嵌套要正确,在java中所有选择结构都可以随便嵌套,也可以多层嵌套,但是一般两到三层.

	eg:public static void main(String[] args){
		//第二步:获得具有从键盘上接收数据的能力
		Scanner input=new Scanner(System.in);
		//给用户提示
		System.out.println("请输入你银行存款:");
		//第三步:接收从键盘上的输入,并将输入的值赋值给变量
		double money=input.nextDouble();
		
		if(money>0){
			//java中不支持 1001000){
				System.out.println("买兰博基尼");
			}else if(money>10&&money<=100){
				System.out.println("买五凌红光");
			}else if(money>100&&money<=1000){
				System.out.println("买宝马");
			}else{
				System.out.println("买自行车");
			}
		}else{
			System.out.println("你的输入有误或余额不够");
		}
	}

题目:现在举行百米赛跑运动,如果你百米赛跑的时间超过10秒,就谢谢参与;如果小于10秒就可以进入决赛,当进入决赛后,请输入性别,如果性别是男,恭喜你进入男子组决赛,如果性别是女,恭喜你进入女子组决赛.

//eg:/**
	*程序的入口方法
	*/
	public static void main(String[] args){
		//第二步:获得具有从键盘上接收数据的能力
		Scanner input=new Scanner(System.in);
		//给用户提示
		System.out.println("请输入你百米赛跑的时间(数字):");
		//第三步:接收从键盘上的输入,并将输入的值赋值给变量
		double time=input.nextDouble();
		
		if(time<=10&&time>0){
			System.out.println("恭喜你进入决赛");
			System.out.println("请输入你的性别:");
			String sex=input.next();
			if(sex.equals("男")){
				System.out.println("恭喜你进入男子组决赛");
			}else if(sex.equals("女")){
				System.out.println("恭喜你进入女子组决赛");
			}else{
				System.out.println("你输入的性别有误!");
			}
		}else if(time>10){
			System.out.println("谢谢参与!");
		}else if(time<=0){
			System.out.println("你的输入有误!");
		}
	}

7.switch选择结构:

有两种及两种以上等值判断问题.

7.1:语法:

	switch(变量/表达式){
				case 值1:
					代码块1;
					break;
				case 值2:
					代码块2;
					break;
				case 值3:
					代码块3;
					break;
				......
				default:
					default代码块;
					break;
			}

7.2:执行流程:

  • 如果表达式的结果等于值1,就执行代码块1,遇到break或结尾大括号就跳出switch结构,执行这个结构之后的语句;
  • 如果表达式的结果等于值2,就执行代码块2,遇到break或结尾大括号就跳出switch结构,执行这个结构之后的语句;
  • 如果表达式的结果等于值3,就执行代码块3,遇到break或结尾大括号就跳出switch结构,执行这个结构之后的语句;
  • 如果表达式不等于case后面的任何一个值,就默认执行default块,遇到break或结尾大括号就跳出switch结构.

7.3:结构特点:

  • 在switch结构中,case块可以有1到多个;default块可以有0个到1个.
  • 在switch结构中,break作用就是跳出switch结构.
  • 在jdk1.7之前,switch结构的小括号中变量或表达式数据类型只能是 byte,short,int char类型;在jdk1.7之后,switch结构的小括号中变量 或表达式数据类型支持String类型.
  • 在switch结构中,case块互换位置对结果没有影响;default可以放在switch结构大括号中任何地方.
  • 在switch结构中,break可以省略,如果省略break关键字,只会判断一次满足条件,就执行这个case块,没有break就接着往后面继续,不会再判断,直到遇到 结尾大括号才能跳出结构.
  • 在switch结构中,至少一种情况都不执行,最多全部情况都执行.
	eg:public static void main(String[] args){
		//第二步:获得具有从键盘上接收数据的能力
		Scanner input=new Scanner(System.in);
		//给用户提示
		System.out.println("请输入今天是星期几(1-7):");
		//第三步:接收从键盘上的输入,并将输入的值赋值给变量
		int today=input.nextInt();
		switch(today){
			case 1:
				System.out.println("早晨吃包子");
				break;
			case 2:
				System.out.println("早晨吃肠粉");
				break;
			case 3:
				System.out.println("早晨吃蒸米粉");
				break;
			case 4:
				System.out.println("早晨吃粥");
				break;	
			case 5:
				System.out.println("早晨油条");
				break;
			case 6:
				System.out.println("早晨鸡蛋");
				break;
			case 7:
				System.out.println("睡觉");
				break;
			default:
				System.out.println("你的输入有误!");
				break;
		}
	}

8.switch VS 多重if

8.1:相同点:

  • 都可以解决多种情况等值判断问题(首选switch结构).
  • 当条件不满足时,都有可能一种情况都不执行.

8.2:不同点:

  • 多重if结构既能解决多种情况范围判断问题,又可以解决多种情况等值判断问题;
    switch结构只能解决多种情况的等值判断问题.
  • 多重if结构最多只能执行一种情况;
    switch结构可以执行多种情况.
  • 多重if结构小括号中式子(布尔表达式)的结果,只能是boolean类型;
    switch结构小括号中式子或变量,数据类型在jdk1.7之前,只能是 byte,short,int char类型;在jdk1.7之后,支持String类型.
  • 多重if结构中分支情况不一定可以互换位置;
    在switch不省略break情况下,分支情况一定可以互换位置;

9.局部变量:

  • 声明在方法中变量,或声明在方法中某个结构中变量叫局部变量
  • 局部变量的作用域:只在声明它的大括号中有效.

10.循环结构

  • 循环结构:重复性做某件事或执行某个操作.
  • 死循环:如果重复性事件或操作一直执行叫死循环.java中避免死循环.

10.1.循环结构组成部分

  • 循环初始值:循环起始值.
  • 循环判断条件(布尔表达式):执行重复性操作需要满足的条件.
  • 循环体:重复做的事或操作.
  • 循环叠加条件:改变条件的值

10.3 while循环:

适用于有重复性操作,并且要先判断后执行,循环次数不固定首选while循环.

10.3.1:语法:

		循环初始值;
		while(循环判断条件){
			循环体;
			循环叠加条件;
		}

JavaSE(三)--选择结构与循环结构_第1张图片

10.3.2:循环执行流程:

先执行循环初始值,再执行循环判断条件,如果循环判断条件为false就跳出循环结构,执行循环结构之后的语句;如果循环判断条件为true,就执行循环体和循环叠加条件; 再重复加粗字体部分.

10.3.3:执行特点:

  • 1:在while循环结构中,先判断后执行.
  • 2:在while循环结构中,循环初始值是一定会执行一次;循环判断条件至少执行一次,最多执行n次;循环体和循环叠加条件至少执行0次,最多执行n次.
  • 3:在while循环结构中,循环初始值和循环条件不可以省略;循环操作可以省略,但没意义;循环叠加条件可以省略,只是省略之后变成了死循环.
		eg:public static void main(String[] args){
		//循环初始值
		int count=0;//记录跑的圈数
		int sum=0;//记录跑的长度
		
		//循环判断条件
		while(sum<10000){
			//循环操作
			System.out.println("跑了一圈400米");
			count++;
			
			//循环叠加条件
			sum=sum+400;
		}
		System.out.println("万米赛跑的圈数为:"+count);
	}

11.do-while循环:

有重复性的操作,且先无条件要执行一次,再判断再执行就用do-while.

11.1:语法:循环初始值;

			do{
				循环操作;
				循环叠加条件;
			}while(循环判断条件);

JavaSE(三)--选择结构与循环结构_第2张图片

11.2:执行流程:

先执行循环初始值,再无条件执行循环体和循环叠加条件,**再执行循环判断条件,如果循环判断条件为false,就跳出循环结构,执行循环结构之后的语句; 如果循环判断条件为true,就要执行循环体和循环叠加条件;**再重复加粗字体部分.

11.3:结构特点:

  • 1:do-while循环中,先无条件执行一次循环体和循环叠加条件,再判断再执行.
  • 2:do-while循环中,循环初始值在第一次时执行且执行一次;
    循环体和循环叠加条件至少执行一次;循环判断条件至少执行一次.
  • 3:do-while循环中,循环初始值和循环条件不可省略;
    循环体可以省略,只是没意义;
    循环叠加可以省略,只是省略后变成死循环.
	eg:public static void main(String[] args){
		//获得从键盘上接收数据的能力
		Scanner input=new Scanner(System.in);
		//循环初始值
		char answer='n';
		do{
			System.out.println("考试进行中....");
			System.out.println("考试结束");
			
			//循环叠加条件
			System.out.println("此次考试是否合格(y表示是,其他表示否):");
			answer=input.next().charAt(0);
		}while(answer!='y');//循环判断条件
		
		System.out.println("恭喜你考试通过!");
	}

12.for循环:

适用于有重复性操作,并且要先判断后执行,循环次数固定首选for循环.

12.1:语法:

for(循环初始值1;循环判断条件2;循环叠加条件3){
	循环体;
}

12.2:执行流程:

先执行循环初始值1,再执行循环判断条件2,如果循环判断条件2为false,就跳出循环结构,执行循环结构之后的语句;如果循环判断条件2为true,就执行循环体,再执行循环叠加条件3;重复蓝色字体部分.

12.3:结构特点:

  • 1:for循环先判断后执行.
  • 2:for循环中,循环初始值1只在第一次执行且只执行一次;
    循环判断条件2至少执行一次;循环体和循环叠加条件3至少执行0次.
  • 3:for循环中小括号中两个分号是一定不可以省略.
  • 4:for循环中,循环初始值1可以是一个也可以是多个表达式,式子之间用,隔开;
    循环判断条件2只有一个boolean类型结果,至少是一个判断表达式 还多个用逻辑运算符连接都可以;循环叠加条件3可以是一个也可以 是多个表达式,式子之间用,隔开;
  • 5:for循环中,循环初始值1可以省略,省略后可以在for前面声明;
    循环叠加条件3如果直接省略就变成死循环,想省略可以将循环叠加 条件3作为循环体的一部分;
    循环判断条件2在语法上可以省略,只是变成死循环.
		eg:public static void main(String[] args){
		//声明一个变量存总和
		int sum=0;
		for(int i=1;i<=100;i++){
			sum=sum+i;
		}
		System.out.println("1到100之和为:"+sum);
	}

			   public static void main(String[] args){
		//循环初始条件:int i=1,j=6
		//循环判断条件:i<=6&&j>=1
		//循环叠加条件:i++,j--
		for(int i=1,j=6;i<=6&&j>=1;i++,j--){
			System.out.println(i+"+"+j+"="+(i+j));
		}
	}

13.for VS do-while VS while的不同点

13.1:适用场景不同:

  • for循环适用于先判断,后执行,循环次数固定的重复性问题.
  • do-while循环适用于先无条件执行一次循环操作,再判断再执行的重复性问题.
  • while循环适用于先判断,后执行,循环次数不固定的重复性问题.

13.2:能用do-while循环解决的问题都可以用for循环和while循环解决.

  • 能用while循环解决的问题一定可以用for循环解决,但是不一定可以用do-while循环解决.
  • 能用for循环解决的问题一定可以用while循环解决,但是不一定可以用do-while循环解决.

14.嵌套循环结构:

将一个循环结构作为另一个循环结构的循环体.
(在一个循环结构的大括号中,完整包含另一个循环结构).
注意: 外层循环一次,内层循环从头循环到尾.
循环结构之间可以任意嵌套,也可以多层嵌套,嵌套要正确
(一般情况下目前用两层嵌套).

	eg:public static void main(String[] args){
		//获得具有从键盘上接收数据的能力
		Scanner input=new Scanner(System.in);
		
		for(int j=1;j<=3;j++){
			System.out.println("第输入第"+j+"个班的学员成绩:");
			//接收一个班四名学员成绩
			for(int i=1;i<=4;i++){
				System.out.println("第输入第"+i+"位学生的成绩:");
				double score=input.nextDouble();
			}
			//接收完一个班成绩
			System.out.println();
		}
	}

15.break

跳出switch结构,跳出循环结构.

15.1:break第一种用法:

跳出当层循环结构;

		eg:public static void main(String[] args){
		//获得具有从键盘上接收数据的能力
		Scanner input=new Scanner(System.in);
		
		//接收一个班四名学员成绩
		for(int i=1;i<=4;i++){
			System.out.println("第输入第"+i+"位学生的成绩:");
			double score=input.nextDouble();
			if(score<0){
				System.out.println("你的输入有误,停止录入");
				break;
			}
		}
	}

15.2:break第二种用法:作标记

声明标记语法:标记名:循环结果
跳出标记结构语法:break 标记名

	eg:public static void main(String[] args){
		//获得具有从键盘上接收数据的能力
		Scanner input=new Scanner(System.in);
		
		//用a给外层循环作标记
		a:for(int j=1;j<=3;j++){
			System.out.println("第输入第"+j+"个班的学员成绩:");
			//接收一个班四名学员成绩
			for(int i=1;i<=4;i++){
				System.out.println("第输入第"+i+"位学生的成绩:");
				double score=input.nextDouble();
				if(score<0){
					System.out.println("你的输入有误,停止录入");
					break a;//跳出指定标记循环结构
				}
			}
			//接收完一个班成绩
			System.out.println();
		}
	}

16.continue

结束当前循环结构当次循环,进入下一次循环.

	eg:public static void main(String[] args){
		//获得具有从键盘上接收数据的能力
		Scanner input=new Scanner(System.in);
		
		//接收一个班四名学员成绩
		for(int i=1;i<=4;i++){
			System.out.println("第输入第"+i+"位学生的成绩:");
			double score=input.nextDouble();
			/*if(score<0){
				continue;
			}*/
			
			if(score>=0){
				System.out.println("录入成功");
			}
		}
	}

个人笔记,思路,仅供参考

你可能感兴趣的:(java,java,编程语言)