java选择结构01_if选择结构

Java程序的执行,一般分为三种执行方式:顺序执行、选择执行循环执行
在这里插入图片描述

1.if单选结构

【语法结构】

if(条件表达式) {
	条件为true时执行的代码;
}

【工作原理】

如果条件为真,则执行if中的语句,然后在执行if条件之后的语句;反之则不执行if中的语句,直接执行if之外的语句。
在这里插入图片描述
【随堂练习】

1、 根据年龄判断是否已经成年,年龄大于18表示成年。

2、 判断一个数是否在5(包含)到10(包含)之间。

2. if双选结构

【语法结构】

if(条件表达式) {
	条件为true时执行的代码;
} else {
	条件为false时执行的代码;
}

【工作原理】

条件为真,执行if中的语句,然后再执行if…else之外的语句;反之执行else中的语句,然后在执行if…else之后的语句。
在这里插入图片描述
【随堂练习】

1、 模拟用户登录操作(用户名和密码都用字符串),需要判断出登录成功和登录失败的情况。

public class IfDemo02 {
	public static void main(String[] args) {
		// 1.通过Scanner获得用户输入的用户名(userName)和密码(pasword)
		Scanner input = new Scanner(System.in);
		System.out.print("请输入用户名:");
		String userName = input.nextLine();
		System.out.print("请输入密码:");
		String password = input.nextLine();
		// 2.把用户输入的用户名和密码与服务器中的保存的用户名和密码做判断。
		if(userName.equals("admin") && password.equals("123456")) { // 登录成功
			System.out.println("登录成功,欢迎回来!");
		}
		else { // 登录失败
			System.out.println("登录失败,请重新登录!");
		}
	}
}

注意:判断字符串是否相同,不能使用==,而是需要使用equals方法。

3.if多选结构

【语法结构】

if (条件表达式1) {
	条件1true时执行的代码;
}
else if(条件表达式2) {
	条件2true时执行的代码;
}
……
else {
	条件1和条件2都不为true执行的代码。。
}

【工作原理】

条件1为真,则执行if中的语句;如果条件2为真,则执行else if中的语句;…;如果条件都不满足再执行else中的语句;最后再执行if…else if…else之后的语句。
在这里插入图片描述
【随堂练习】

1、判断一个学生的成绩,如果90(包含)100(包含)为优秀,70(包含)90为良好,60(包含)~70为及格,60分以下输出不及格。

/**
 * 步骤分析:
 *   a)通过Scanner获得一个学生成绩,假设使用score变量保存。
 *   b)需要判断输入的成绩是否合法,成绩的合法区间:[0, 100]之间。
 *   c)根据成绩输出对应的等级。等级有:优秀、良好、及格和不及格,所以应该使用if多选结构。
 */
public class IfDemo03 {
	public static void main(String[] args) {
		// 1.通过Scanner获得一个学生成绩
		Scanner input = new Scanner(System.in);
		System.out.print("请输入一个学生成绩:");
		double score = input.nextDouble();
		// 2.判断输入的成绩是否合法
		if (score < 0 || score > 100) { // 不合法
			System.out.println("您输入的成绩不合法,请重新输入!");
		}
		// 3.根据成绩输出对应的等级。
		else if (score >= 90) {
			System.out.println("优秀");
		} 
		else if (score >= 70) {
			System.out.println("良好");
		} 
		else if (score >= 60) {
			System.out.println("及格");
		} 
		else { // [0, 60)
			System.out.println("不及格");
		}
	}
}

注意:从现在开始,每个人的思维逻辑不一样,那么代码实现的方案就不一样,但是最终的结果是一个样。

2、 输入一个整数month代表月份,根据月份输出对应的季节。

春季:3、4、5 夏季:6、7、8 秋季:9、10、11 冬季:12、1、2

/**
 * 实现步骤:
 *    a)通过Scanner获得一个月份,假设使用month保存。
 *	  b)根据输入月份输出对应的季节。
 *			季节的判断方式:
 *				方式一:区间判断。例如:month >= 3 && month <= 5
 *					--> 不合适,可读性较差。
 *				方式二:直接对月份做判断。例如:month == 3 || month == 4 || month == 5
 *					--> 合适,可读性高。
 */
public class IfTest01 {
	public static void main(String[] args) {
		// 1.通过Scanner获得一个月份
		Scanner input = new Scanner(System.in);
		System.out.print("请输入月份:");
		int month = input.nextInt();
		// 2.根据输入月份输出对应的季节。
		if(month == 3 || month == 4 || month == 5) {
			System.out.println("春季");
		}
		else if(month == 6 || month == 7 || month == 8) {
			System.out.println("夏季");
		}
		else if(month == 9 || month == 10 || month == 11) {
			System.out.println("秋季");
		}
		else if(month == 12 || month == 1 || month == 2) {
			System.out.println("冬季");
		}
		else { // 执行到此处,证明month不在[1, 12]区间
			System.out.println("您输入的月份有误,请重新输入!");
		}
		
	}
}

3、 输入工作年限(year)和月薪(money),然后计算出应得的年终奖。

工作不满1年(不包含): 发月薪的1倍月薪年终奖;如果月薪大于8000, 那么就是发1.2倍月薪年终奖。

工作不满3年(不包含):发月薪的2倍月薪年终奖;如果月薪大于15000, 那么就是发3倍月薪年终奖。

工作满3年(包含)以上:发月薪的3倍月薪年终奖;如果月薪大于20000, 那么就是发4倍月薪年终奖。

/**
 * 思路分析: 先判断工作年限,然后再判断月薪,最后得到年终奖
 */
public class IfTest02 {
	public static void main(String[] args) {
		// 1.获得工作年限(year)和月薪(money)
		Scanner input = new Scanner(System.in);
		System.out.print("请输入工作年限:");
		double year = input.nextDouble();
		System.out.print("请输入月薪:");
		int money = input.nextInt();
		// 注意:假设获得的月薪和工作年限都是合法的
		// 2.根据工作年限和月薪计算年终奖
		if(year < 1) {
			if(money > 8000) {
				System.out.println("您的年终奖为:" + 1.2*money);
			}
			else {
				System.out.println("您的年终奖为:" + 1.0*money);
			}
		}
		else if(year < 3) { // year的范围:[1, 3)
			if(money > 15000) {
				System.out.println("您的年终奖为:" + 3.0*money);
			}
			else {
				System.out.println("您的年终奖为:" + 2.0*money);
			}
		}
		else {	// year的范围:[3, n)
			if(money > 20000) {
				System.out.println("您的年终奖为:" + 4.0*money);
			}
			else {
				System.out.println("您的年终奖为:" + 3.0*money);
			}	
		}
	}
}

4、录入一个年份,判断其是否为闰年。

闰年的计算方法:年数能被4整除,并且不能被 100整除;或者能被400整除的整数年份。

/**
 * 思路分析:
 *	条件一:year % 4 == 0 && year % 100 != 0
 *	条件二:year % 400 == 0
 *  以上两个条件,满足其中一个条件,则证明year年是闰年。
 */
public class IfTest03 {
	public static void main(String[] args) {
        // 1.获得用户输入的年份
		Scanner input = new Scanner(System.in);
		System.out.print("请输入一个年份:");
		int year = input.nextInt();
		// 2.判断year年是否为闰年
		if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
			System.out.println(year + "年是闰年!");
		}
		else {
			System.out.println(year + "年是平年!");
		}
	}
}

5、输入时(hour)、分(minute)、秒(second)的一个具体时间,要求打印出它的下一秒出来(一天24小时)。

例如输入的是23时59分59秒,则输出00:00:00;例如输入17时09分59秒,则输出17:10:00。

/**
 * 实现步骤:
 *   a)通过Scanner获得时(hour)、分(minute)、秒(second)。
 *	 b)获取输入时间的下一秒。
 *		7:8:10    --下一秒--> 7:8:11
 *		7:8:59    --下一秒--> 7:9:0 
 *		7:59:59   --下一秒--> 8:0:0 
 *		23:59:59  --下一秒--> 0:0:0
 *		通过分析我们发现,获得当前时间的下一秒,就是对秒做+1的操作。
 *		if(秒 == 60) {
 *			秒 = 0;
 *			分钟++;
 *			if(分钟 == 60) {
 *				分钟 = 0;
 *				小时++;
 *				if(小时 == 24) {
 *					小时 = 0;
 *				}
 *			}
 *		}
 *	c)对下一秒的时间做格式化操作。
 * 		核心:当时、分、秒小于10的时候,需要在前面添加一个0。	
 */
// 1.获取输入的时(hour)、分(minute)、秒(second)
Scanner input = new Scanner(System.in);
System.out.print("请输入小时:");
int hour = input.nextInt();
System.out.print("请输入分钟:");
int minute = input.nextInt();
System.out.print("请输入秒:");
int second = input.nextInt();
// 2.获取输入时间的下一秒
second++;
if(60 == second) {
	second = 0;
	minute++;
	if(60 == minute) {
		minute = 0;
		hour++;
		if(24 == hour) {
			hour = 0;
		}
	}
}
// 3.对时分秒进行格式化操作
String hourStr = hour + ""; // hour = 9
if(hour < 10) {
	hourStr = "0" + hour; // hourStr = "09"
}
String minuteStr = minute + "";
if(minute < 10) {
	minuteStr = "0" + minute;
}
String secondStr = second + "";
if(second < 10) {
	secondStr = "0" + second;
}
// 输出当前时间的下一秒
System.out.println(hourStr + ":" + minuteStr + ":" + secondStr);

4. if选择结构总结

  1. 如果if选择结构只需执行一条语句时,那么可以省略{};如果需要执行多条语句,那么就是不能省略{}。为了提高代码的易读性,建议不要省略{}。

  2. {}中的代码语句也称为代码块,在代码块定义的常量或变量的作用域仅限于代码块中,在代码块之外不能被使用。

  3. 能用if多选择结构就不要用if单选择结构,因为if多选择结构的效率要高于if单选择结构。

ps:如需最新的免费文档资料和教学视频,请添加QQ群(627407545)领取。

发布了55 篇原创文章 · 获赞 0 · 访问量 784

猜你喜欢

转载自blog.csdn.net/zhoujunfeng121/article/details/104639449