初学javaDay4

今天我们来学习流程控制语句

一、选择结构语句

1.1 If语句
if语句格式1:
if(表达式){
语句;
}

注意事项:
1)有左大括号的地方{ 不能有分号;有分号的地方不能有左大括号
2)if语句中如果是单条语句,大括号可以省略,(永远建议不要省略)
3)Java中有一个代码块的概念(面向对象中讲"static")
写法:
{
int x =10 ;
System.out.println(x);
}
4)表达式:无论是复杂的还是简单的,都是boolean类型

应用场景:
针对两种结果进行判断
if语句格式2:
if(关系表达式) {
语句体1;
}else {
语句体2;
}

执行流程:
1)首先判断表达式是否成立
2)如果成立,语句1;
3)如果不成立,执行语句2

if语句的格式2,和三元运算符的区别?
三元运算符这对的是某个数据的数据值在进行判断; (表达式)?true的结果:false的结果;
if语句格式2:
针对两个结果进行判断,输出一个结果(可能是一个输出语句,也可能是具体的值)
三元运算符能够使用的,一定可以使用if;但是if使用,不一定能够收三元!
开发过程中,没有特别要求,都是用If语句!

if语句格式3:
if(关系表达式1) {
语句体1;
}else if (关系表达式2) {
语句体2;
}

else {
语句体n+1;
}

执行流程:
1)先判断表达式1是否成立,成立,执行语句1
2)如果不成立,在此判断表达式2是否成立,成立,执行语句2
3)…最终上面的结果都不匹配,执行else中的语句n+1;

if三种格式的应用场景:
if格式1:针对单个情况判断
if格式2:针对两种情况判断 (开发中使用居多)
if格式3:针对两个以上的判断

1.2. switch语句
switch语句格式:
switch(表达式) {
case 值1:
语句体1;
break; (中断,结束的意思)
case 值2:
语句体2;
break;

default: (默认的意思)
语句体n+1;
break;
}

执行流程:
1)表达式中的值和case中的 值1进行比较,匹配成功,就执行语句1,遇见break,switch 结束了
2)依次case值2,进行比较,成立,执行语句2,语句结束…
3)…如果上述都不匹配,执行default中的语句,break结束.

格式解释:
switch ----->启用当前switch语句
表达式------>一般接收具体的变量
表达式的类型一般情况:byte,short,int,char
Tips:
如果是jdk1.5以后,表达式的类型可以是"枚举"
如果是jdk1.7以后,表达式的类型可以是String类型 (String:是一个引用类型)
case语句---->需要将当前的case的值和switch中表达式进行比较,是否匹配
break语句—> 表示结束,中断 switch语句
default ---->case后面都不匹配,执行default

注意事项:
1)在Java语言中,case后面的值只能是常量,不能是变量
2)关于switch语句的中break(属于跳转控制语句中的一种)
break一般情况下建议不要省略,如果没有书写break语句,会出现case穿透现象!
3)关于default语句的位置问题
a)default语句中的break可以忽略不写,但是不建议
b)可以在switch语句中的任何位置,但是还要遵循switch的按照顺序进行执行(case中都不匹配,才能执行default)
c)如果default语句在语句中,break不能省略!
4)switch语句的结束条件:
a)语句break,语句结束
b)程序默认执行末尾,语句结束!

重点注意事项: case穿透性!!!!!
在switch语句中,如果case的后面不写break,将出现穿透现象,也就是不会在判断下一个case的值,直接向后运行,直到遇到break,或者整体switch结束。

二、循环语句

2.1. for循环语句
for循环语句格式:
for(初始化语句;条件表达式;控制体语句){
语句体;
}

执行流程:
1)执行初始化语句---->给变量进行赋值
2)判断条件表达式是否成立,如果成立,true—>执行语句体
3)执行控制体语句,----->再次判断条件是否成立,如果成立,继续执行语句体
4)一直执行到条件判断表达式不成立,即为false的时候,循环语句结束…

注意事项:
判断条件语句的结果是一个boolean类型循环体语句如果是一条语句,大括号可以省略;
如果是多条语句,大括号不能省略。建议永远不要省略。
一般来说:有左大括号就没有分号,有分号就没有左大括号

2.2. while循环语句
while循环语句格式:
a)基本格式
while(判断条件语句) {
循环体语句;
}
b)扩展格式 (使用扩展格式)
初始化语句;
while(判断条件语句) {
循环体语句;
控制条件语句;
}

执行流程:
1)初始化语句进行变量赋值
2)判断条件是否成立,—>成立,执行循环体语句—>执行控制体语句
3)再次判断条件是否成立—>成立----->依次
4)一直条件条件不成立,结束!

for循环和while循环的区别 ?
1)如果明确循环的次数,使用for循环,否则使用while循环
2)从内存角度考虑,如果循环结束后,还想去访问那个变量,使用while循环

三、扩展知识点:死循环

死循环:也就是循环中的条件永远为true,死循环的是永不结束的循环。例如:while(true){}。
在后期的开发中,会出现使用死循环的场景,例如:我们需要读取用户输入的输入,但是用户输入多少数据我们并不清楚,也只能使用死循环,当用户不想输入数据了,就可以结束循环了,如何去结束一个死循环呢,就需要使用
到跳出语句了。

------------------------------------我是一条华丽的分割线~------------------------------------
讲了这么多理论知识,附上练习题吧
1.看程序,分析下面程序的结果:
int x = 2,y=3;
switch(x)
{
default:
y++;
case 3:
y++;
break;
case 4:
y++;
}
System.out.println(“y=”+y);

结果:y = 5
解答思路:case的穿透性
解答过程: default:
y++; // y = 3+1 = 4,没有break,继续
case 3:
y++; // y = 4+1 = 5
break; // 遇到break,结束

2.根据输入的值,判断当前季节(分别用if语句和switch语句实现)

 //根据输入的值,判断当前季节,用if语句实现
import java.util.Scanner;
class IfDemo{
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入月份:");
		int a = sc.nextInt();
		if (a >= 1 && a<= 12){
			if (a == 3 || a == 4 || a == 5){
				System.out.println("春季");
			}
			else if (a == 6 || a == 7 || a == 8){
				System.out.println("夏季");
			}
			else if (a == 9 || a == 10 || a == 11){
				System.out.println("秋季");
			}
			else if (a == 12 || a == 1 || a == 2){
				System.out.println("冬季");
			}		
		}
		else{
				System.out.println("非法数据");
		}		
	}
}
//根据输入的值,判断当前季节,用switch语句实现
import java.util.Scanner;
class SwitchDemo{
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入月份:");
		int a = sc.nextInt();
		switch(a){
			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;
			case 11:
				System.out.println("秋季");
				break;
			case 12:
				System.out.println("冬季");
				break;
			case 1:
				System.out.println("冬季");
				break;
			case 2:
				System.out.println("冬季");
				break;
			default:
				System.out.println("非法数据");
				break;
		}
	}
}

3.用for循环求1-100之间的偶数和

//用for循环求1-100之间的偶数和
class ForDemo{
	public static void main(String[] args){
		
		//方法一:
		int sum = 0;
		for(int i = 1;i <= 100;i++){
			if (i%2 == 0){
				sum += i;
			}
		}
		System.out.println("1-100之间的偶数和为:"+sum);
		
		System.out.println("------------------------");
		
		//方法二:
		int sum2 = 0;
		for(int i = 2;i <= 100;i += 2){
			sum2 += i;
		}
		System.out.println("1-100之间的偶数和为:"+sum2);
	}
}

4.用for循环打印所有的水仙花数

/*
水仙花数:
		指定的是三位数,
		特点:个位数的立方+十位数的立方+百位数的立方之和是当前这个数据本身
			举例
				153=1*1*1 +5*5*5 +3*3*3
*/

class ForDemo2{
	public static void main(String[] args){
		int cnt = 0;
		for(int i = 100;i < 1000;i++){

			int ge = i %10;
			int shi = i /10 % 10 ;
			int bai = i /10/10 %10 ;
			if(ge*ge*ge + shi*shi*shi + bai*bai*bai == i){
				cnt ++;
				System.out.println("水仙花数为:"+i);
			}		
		}
		System.out.println("水仙花共有"+cnt+"个");
	}
}

5.用while循环求
我国最高山峰是珠穆朗玛峰:8848m,我现在有一张足够大的纸张,厚度为:0.01m。请问,我折叠多少次,就可
以保证厚度不低于珠穆朗玛峰的高度?

class WhileDemo2{
	public static void main(String[] args){
		boolean isContinue = true;
		double thickness = 0.01;
		int cnt = 0;
		while(isContinue){
			thickness = thickness * 2;
			cnt++;
			if (thickness >= 8848){
				isContinue = false;
			}	
		}
		System.out.println("需要折叠"+cnt+"次"+",折叠后的厚度为"+thickness+"m");
	}
}

6:键盘录入x的值,计算出y的并输出。
x和y的关系满足如下:
x>=3 y = 2x + 1;
-1<=x<3 y = 2x;
x<=-1 y = 2x – 1;

import java.util.Scanner;
class ScannerDemo{
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入X的值:");
		int x = sc.nextInt();
		int y = 0;

		if (x >= 3){
			y = 2*x + 1;
		}
		else if (x >= -1 && x < 3){
			y = 2*x;
		}
		else if ( x <= -1){
			y = 2*x - 1;
		}
		System.out.println("y的值为:"+y);
	}
}

好了,今天的分享就到这了,期待后期的分享~ 文章中如有不对,欢迎指出留言

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值