尚硅谷java学习笔记第三天(流程控制)

本文详细介绍了程序设计中的流程控制语句,包括顺序、分支和循环结构。讲解了if...else、switch-case等条件判断,并通过实例展示了如何在Java中应用这些结构。此外,还涉及到了Scanner类的使用以及随机数、循环结构在实际问题中的应用,如彩票游戏和日期计算等。
摘要由CSDN通过智能技术生成

• 流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组 合成能完成一定功能的小逻辑模块。

• 其流程控制方式采用结构化程序设计中规定的三种基本流程结构,即:

顺序结构 分支结构 循环结构

1:顺序结构

程序从上到下逐行地执行,中间没有任何判断和跳转。

2:分支结构

根据条件,选择性地执行某段代码。

有if…else和switch-case两种分支语句。

if…else

在这里插入图片描述

在这里插入图片描述

分支结构:if-else使用说明

条件表达式必须是布尔表达式(关系表达式或逻辑表达式)、布尔变量

语句块只有一条执行语句时,一对{}可以省略,但建议保留 

if-else语句结构,根据需要可以嵌套使用  当if-else结构是“多选一”时,最后的else是可选的,根据需要可以省略

当多个条件是“互斥”关系时,条件判断语句及执行语句间顺序无所谓 当多个条件是“包含”关系时,“小上大下 / 子上父下”

/*
分支结构:if-else(条件判断结构)

三种结构
第一种:
if(条件表达式){
	执行表达式;
}
第二种:
if(条件表达式){
	执行表达式1;
}else{
	执行表达式2;
}

第三种:
if(条件表达式){
	执行表达式1;
}else if{
	执行表达式2;
}else if{
	执行表达式3;
}
....
else{
	执行表达式n:
}

*/

class  IfTest{
	public static void main(String[] args) {
		
		//举例1
		int heartBeats = 79;
		if(heartBeats < 60 || heartBeats > 100){
			System.out.println("需要做进一步检查");	
		}
		
		System.out.println("检查结束");	
		
		//举例2
		int age = 23;
		if(age < 18){
			System.out.println("你可以看动画片");
		}else{
			System.out.println("你可以看成人电影");
		}

		//举例3
		if(age < 0){
			System.out.println("输入数据非法");
		}else if(age < 18){
			System.out.println("青少年时期");
		}else if(age < 35){
			System.out.println("青壮年时期");
		}else if(age < 60){
			System.out.println("青少年时期");
		}else{
			System.out.println("老年时期");
		}
	}
}

Scanner的使用
/*
如何从键盘获取不同类型的变量

具体实现步骤:
1.导包:import java.util.Scanner;
2.Scanner的实例化:Scanner scan = new Scanner(System.in);
3.调用Scanner类的相关方法,来获取指定类型的变量
*/
import java.util.Scanner;

class  ScannerTest{
	
	public static void main(String[] args) {
			
			Scanner scan = new Scanner(System.in);

			int num = scan.nextInt();
			
			System.out.println("num");	
	}
}

class  ScannerTest{
	
	public static void main(String[] args) {
			
			Scanner scan = new Scanner(System.in);
			
			System.out.println("请输入你的姓名:");
			String name = scan.next();
			System.out.println(name);

			
			System.out.println("请输入你的年龄:");
			int age = scan.nextInt();
			System.out.println(age);
			
			System.out.println("请输入你的体重:");
			double weight = scan.nextDouble();
			System.out.println(weight);
			//对于char型的获取,Scanner没有提供相关的方法,只能获取一个字符串
			System.out.println("请输入你的性别:");
			String gender = scan.next();
			char genderChar = gender.charAt(0);//获取索引为0位置上的字符
			System.out.println(genderChar);
	}
}

if语句例题1

/*
岳小鹏参加Java考试,他和父亲岳不群达成承诺:
如果:
成绩为100分时,奖励一辆BMW;
成绩为(80,99]时,奖励一台iphone xs max;
当成绩为[60,80]时,奖励一个 iPad;
其它时,什么奖励也没有。
请从键盘输入岳小鹏的期末成绩,并加以判断
说明:
1:else结构是可选的。
2:针对于条件表达式	
	如果多个条件表达式之间是“互斥”关系(或没有交集的关系),哪个判断和执行语句声明在上面还是下面,无所谓。
	如果多个条件表达式之间有交集的关系,需要根据实际情况,考虑清楚应该将哪个结构声明在上面。
	如果多个条件表达式之间有包含的关系,通常情况下,需要将范围小的声明在范围大的上面,否则,范围小的就没机会执行。
*/
import java.util.Scanner;

class  ScannerTest{
	
	public static void main(String[] args) {
			
			Scanner scan = new Scanner(System.in);

			System.out.println("请输入期末成绩:");
			
			int score = scan.nextInt();

			if(score< 0 || score> 100){
				
				System.out.println("输入数据非法");
			
			}else if(score == 100){
			
				System.out.println("奖励一辆BMW");

			}else if(score > 80 && nscore <= 99){
				
				System.out.println("奖励一台iphone xs max");

			}else if(score > 60 && score<= 80){
				
				System.out.println("奖励一个 iPad");

			}/*else{
				//else结构是可选的
				System.out.println("什么奖励也没有");
			}*/

	}
}

if语句例题2

/*
编写程序:由键盘输入三个整数分别存入变量num1、num2、num3,
对它们进行排序(使用 if-else if-else),并且从小到大输出。
说明:
1.if-else结构是可以相互嵌套的。
2.如果if-else结构中的执行语句只有一行时,对应的{}是可以省略的,不建议省略
*/
import java.util.Scanner;

class  IfTest2{
	
	public static void main(String[] args) {
			
			Scanner scan = new Scanner(System.in);

			System.out.println("请输入一个整数:");
			
			int num1 = scan.nextInt();
			
			System.out.println("请输入二个整数:");
			
			int num2 = scan.nextInt();
			
			System.out.println("请输入三个整数:");
			
			int num3 = scan.nextInt();
			
			
			if(num1 >= num2){
				if(num3 >= num1){
					System.out.println(num2 + "," + num1 + "," + num3);
				}else if(num3 <= num2){
					System.out.println(num1 + "," + num2 + "," + num1);
				}else{
					System.out.println(num2 + "," + num3 + "," + num1);
				}
		
			}else{
				if(num3 >= num2){
					System.out.println(num1 + "," + num2 + "," + num3);
				}else if(num3 <= num1){
					System.out.println(num3 + "," + num1 + "," + num2);
				}else{
					System.out.println(num1 + "," + num3 + "," + num2);
				}		
			}
	}
}

就近原则

class  IfExer{
	
	public static void main(String[] args) {
			
		int x = 4;
		int y = 1;
		if (x > 2)
			if (y > 2) 
				System.out.println(x + y);
		//就近原则,和if (y > 2) 配对	
		else
			System.out.println("x is " + x);	
	}
}
如何获取一个随机数(彩票游戏)
//如何获取一个随机数:10 - 99
			double value = (int)(Math.random()*90 + 10);//[0.0,1.0)--[0.0,90.0)--[10.0,100.0)

			//公式:[a,b] :(int)(Math.random()*(b - a + 1) + a)

if语句练习3

获取char数值和char型转int型的方法(equals的用法)
/*
假设你想开发一个玩彩票的游戏,程序随机地产生一个两位数的彩票,提示用户输入
一个两位数,然后按照下面的规则判定用户是否能赢。
1)如果用户输入的数匹配彩票的实际顺序,奖金10 000美元。
2)如果用户输入的所有数字匹配彩票的所有数字,但顺序不一致,奖金 3 000美元。
3)如果用户输入的一个数字仅满足顺序情况下匹配彩票的一个数字,奖金1 000美元。
4)如果用户输入的一个数字仅满足非顺序情况下匹配彩票的一个数字,奖金500美元。
5)如果用户输入的数字没有匹配任何一个数字,则彩票作废。
。
*/
import java.util.Scanner;

class  IfExer{
	
	public static void main(String[] args) {
			
			Scanner scan = new Scanner(System.in);
	
			double value = (int)(Math.random()*90 + 10);//获取一个[10,99)的值

			int value1 = (int)value;

			
			System.out.println("请输入一个二位数的数字:");

			String gender = scan.next();
			
			char genderChar = gender.charAt(0);//获取索引为0位置上的字符
			
			char genderChar1 = gender.charAt(1);//获取索引为0位置上的字符
			
			int num1 = genderChar - '0';//把char类型变量转换成int变量
			
			int num2 = genderChar1 - '0';
			
			System.out.println(num1);
			System.out.println(num2);

			if(num1 == value1/10 && num2 == value1%10){

				System.out.println("奖金10000美元");

			}else if(num2 == value1/10 && num1 == value1%10){
				
				System.out.println("奖金3000美元");

			}else if(num1 == value1/10 || num2 == value1%10){
				
				System.out.println("奖金500美元");
			
			}else if(num2 == value1/10 || num1 == value1%10){
				
				System.out.println("奖金500美元");	

			}else{
				
				System.out.println("彩票作废");

			}
			System.out.println(value1);
			System.out.println(value1/10);
			System.out.println(value1%10);
	}

}
/*
if语句练习4
大家都知道,男大当婚,女大当嫁。那么女方家长要嫁女儿,当然要提出
一定的条件:高:180cm以上;富:财富1千万以上;帅:是。
如果这三个条件同时满足,则:“我一定要嫁给他!!!”
如果三个条件有为真的情况,则:“嫁吧,比上不足,比下有余。”
如果三个条件都不满足,则:“不嫁!”
*/
import java.util.Scanner;

class  IfTExer{
	
	public static void main(String[] args) {
			
			Scanner Scanner = new Scanner(System.in);
			
			System.out.println("请输入你的身高:(cm)");

			int height = Scanner.nextInt();
		
			System.out.println("请输入你的财富:(千万)");
			
			double money = Scanner.nextDouble();
			
			System.out.println("请输入你是否帅:(是/否)");
			
			String isHandsome = Scanner.next(); 
        
			if(height >= 180 && money >= 1.0 && isHandsome.equals("是")){
				
				System.out.println("我一定要嫁给他!!!");
						
			}else if(height >= 180 || money >= 1.0 || isHandsome.equals("是")){
			
				System.out.println("嫁吧,比上不足,比下有余。");
			
			}else{
				
				System.out.println("不嫁!");	
		
			}			
	}
}

switch-case

在这里插入图片描述

/*
分支结构之二:switch-case

1.格式
switch(表达式){
case 常量1;
	执行语句1;
	//break;
case 常量2;
	执行语句2;
	//break;
...

default:
	执行语句n;
	//break;
}
2.说明
根据switch表达式中的值,依次匹配各个case中的常量,一旦匹配成功,则进入相应的case
结构中,调用其执行语句。当调用完执行语句以后,则仍然继续向下执行其他case结构中的
执行语句,直到遇到break关键字或此switch-case结构末尾为止结束。

break,可以使用在switch-case结构中,表示一旦执行到此关键字,就跳出switch-case结构

switch结构中的表达式,只能是如下的6种数据类型之一:byte,short,char,int,枚举类型(jdk5.0新增)
String类型(jdk7.0新增)

case后只能声明常量,不能声明范围

break关键字是可选的

default相当于if-else结构中的else
default结构是可选的,位置是灵活的
*/
class  SwitchCaseTest{
	
	public static void main(String[] args) {
		//int类型
		int number = 2;
		switch(number){
		
		case 0:
			System.out.println("zero");
			break;
		case 1:
			System.out.println("one");
			break;
		case 2:
			System.out.println("two");
			break;	
		case 3:
			System.out.println("three");
			break;
		default:
			System.out.println("other");
		}
        
        //String类型
        String season = "summer";
		switch(season){
		
		case "spring":
			System.out.println("春暖花开");
			break;
		case "summer":
			System.out.println("夏日炎炎");
			break;
		case "autumn":
			System.out.println("秋高气爽");
			break;	
		case "winter":
			System.out.println("白雪皑皑");
			break;
		default:
			System.out.println("输入季节有误");
			break;

	}
}
/*
2.对学生成绩大于60分的,输出“合格”。低于60分的,输出“不合格”。
*/
import java.util.Scanner;

class  SwitchCaseTest{
	
	public static void main(String[] args) {

		Scanner scan = new Scanner(System.in);
		
		int score = 78; 
		
		switch(score/10){
		
        case 0:	
            System.out.println("不及格");
			break;  
		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;
		case 8:
			System.out.println("及格");
			break;
		case 9:
			System.out.println("及格");
			break;
		case 10:
			System.out.println("及格");
			break;
		default:
			System.out.println("other");
			break;
		}						
	}
}
		
		//改写 说明:如果switch-case结构中的多个case的执行语句相同,则可以合并
		int score = 78; 
		
		switch(score/10){
		case 0:	
		case 1:			
		case 2:			
		case 3:			
		case 4:			
		case 5:
			System.out.println("不及格");
			break;
		case 6:			
		case 7:			
		case 8:			
		case 9:	
		case 10:
			System.out.println("及格");
			break;
        }
		
		//优化
		switch(score/60){
        case 0:
            System.out.println("不及格");
			break;  
        case 1:
            System.out.println("及格");
			break;
        }                              
/*
4. 编写程序:从键盘上输入2019年的“month”和“day”,要求通过程序
输出输入的日期为2019年的第几天。
说明:
1.凡是可以使用switch-case的结构,都可以转换位if-else。反之,不成立。
2。我们写分支结构时,当发现既可以使用switch-case,(同时,switch中表达式的取值情况不太多),又可以使用if-else时,我们优先选择使用switch-case。原因:switch-case效率高。

*/
import java.util.Scanner;

class  SwitchCaseTest{
	
	public static void main(String[] args) {

		Scanner scan = new Scanner(System.in);
		
		System.out.println("请输入2019年的month");
		int month = scan.nextInt(); 
		System.out.println("请输入2019年的day");
		int day = scan.nextInt(); 

		int days = 0;
		
		switch(month){
		
		case 12:
			days += 30;			
		case 11:
			days += 31;			
		case 10:
			days += 30;				
		case 9:
			days += 31;			
		case 8:
			days += 31;			
		case 7:
			days += 30;			
		case 6:
			days += 31;			
		case 5:
			days += 30;			
		case 4:
			days += 31;			
		case 3:
			days += 28;			
		case 2:
			days += 31;			
		case 1:
			days += day;			
		}
		System.out.println("2019年的第:"+ days + "天");						
	}
}
/*
switch语句练习1
从键盘分别输入年、月、日,判断这一天是当年的第几天
注:判断一年是否是闰年的标准:
1)可以被4整除,但不可被100整除
或
2)可以被400整除
*/
import java.util.Scanner;

class  SwitchCaseTest{
	
	public static void main(String[] args) {

		Scanner scan = new Scanner(System.in);
		
		System.out.println("请输入year:");
		
        int year = scan.nextInt();
		
        System.out.println("请输入month:");
		
        int month = scan.nextInt(); 
		
        System.out.println("请输入day:");
		
        int day = scan.nextInt(); 

		int days = 0;		
		
        switch(month){
		
		case 12:
			days += 30;			
		case 11:
			days += 31;			
		case 10:
			days += 30;				
		case 9:
			days += 31;			
		case 8:
			days += 31;			
		case 7:
			days += 30;			
		case 6:
			days += 31;			
		case 5:
			days += 30;			
		case 4:
			days += 31;		
		case 3:
			if((year%4 == 0 && year/100 != 0)||(year%400 == 0)){				
				days += 29;
			}else{			
				days += 28;
			}			
		case 2:
			days += 31;			
		case 1:
			days += day;			
		}
		System.out.println(year + "年的第:" + days + "天");						
	}
}
/*
编写一个程序,为一个给定的年份找出其对应的中国生肖。中国的生肖基于12年一个周期,
每年用一个动物代表:rat、ox、tiger、rabbit、dragon、snake、horse、sheep、monkey、
rooster、dog、pig。

*/
import java.util.Scanner;

class  SwitchCaseTest{
	
	public static void main(String[] args) {

		Scanner scan = new Scanner(System.in);
		
		System.out.println("请输入year:");
		
        int year = scan.nextInt();
		int test = year%12;
		System.out.println(test);	
		switch(year%12){
		case 0:
			System.out.println("monkey");
			break;		
		case 1:	
			System.out.println("rooster");
			break;
		case 2:	
			System.out.println("dog");
			break;
		case 3:
			System.out.println("pig");
			break;
		case 4:
			System.out.println("rat");
			break;
		case 5:	
			System.out.println("ox");
			break;
		case 6:
			System.out.println("tiger");
			break;
		case 7:
			System.out.println("rabbit");
			break;
		case 8:
			System.out.println("dragon");
			break;
		case 9:	
			System.out.println("snake");
			break;
		case 10:
			System.out.println("horse");
			break;
		case 11:
			System.out.println("sheep");
			break;			
		}					
	}

}

3:循环结构

根据循环条件,重复性的执行某段代码。

有while、do…while、for三种循环语句。

注:JDK1.5提供了foreach循环,方便的遍历集合、数组元素。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值