JAVA基础 —— 判断和循环

本文详细介绍了Java编程中的顺序结构、分支结构(包括if和switch语句)以及循环结构(for、while和do..while循环),并提供了无限循环和跳转控制语句的说明。文章通过四个编程案例,如逢7过游戏、求平方根、判断质数和猜数字游戏,帮助读者巩固和应用所学知识。
摘要由CSDN通过智能技术生成

目录

一.顺序结构

二.分支结构

1. if语句

1.1 if语句的三种格式:

2. switch语句 

2.1 if的第三种格式与switch语句使用场景区别:

三.循环结构

1. for循环

2. while循环

2.1 for循环和while循环的对比:

3. do..while循环

 4. 无限循环语句

 5. 跳转控制语句

四、循环高级综合练习

4.1 案例1:逢7过

4.2  案例2 :求平方根

 4.3 案例3:求质数

 4.4 案例4:猜数字小游戏


一.顺序结构

顺序结构语句是Java程序默认的执行流程,按照代码的先后顺序,从上到下依次执行。

public static void main(String[] args) {
		System.out.println("日照香炉生紫烟");
		System.out.println("遥看瀑布挂前川");
		System.out.println("飞流直下三千尺");
		System.out.println("疑是银河落九天");
	}

运算结果:

二.分支结构

1. if语句

1.1 if语句的三种格式:

  • if(关系表达式){
       语句体;
    }
  • 执行流程:(1)首先计算关系表达式的值 ;(2)如果关系表达式的值为true就执行语句体 ;(3)如果关系表达式的值为fasle就不执行语句体;(4)继续执行后面的其他语句

  • 注意事项: 

    public static void main(String[] args) {
    		
    		//1.大括号的开头可以另起一行书写,但建议写在第一行末尾
    		//2.在语句体中,如果只有一句代码,大括号可以省略不写
    		//3.如果对一个布尔类型的变量进行判断,不要用==,直接把变量写在小括号即可
    		
    		int  number = 20;
    		if(number > 10) {
    			int a = 100; //1.定义变量a 2.给变量a赋值100  (不是一次操作)
    			System.out.println( "number 大于 10");
    		}
    		
    		boolean flag = false;
    		if (flag) {
    			System.out.println("flag值为false");
    		}
    		
    	}

  •  
    if(关系表达式){
         语句体1;
    ]else{
         语句体2
    }
  • 执行流程:1)首先计算关系表达式的值 ;(2)如果关系表达式的值为true就执行语句体1 ;(3)如果关系表达式的值为fasle就执行语句体2;(4)继续执行后面的其他语句

  •  
    if(关系表达式1){
         语句体1;
    }else if(关系表达式2){
         语句体2;
    }
      ...
     else{
         语句体 n + 1;
    }
  • 执行流程:1)首先计算关系表达式1的值 ;(2)如果关系表达式的值为true就执行语句体1 ;如果关系表达式的值为fasle就计算关系表达式2;(3)如果关系表达式的值为true就执行语句体2 ;如果关系表达式的值为fasle就计算关系表达式3;(4)......; (5)如果所有的关系表达式结果都为false,就执行语句体n+1;

2. switch语句 

  • switch(表达式){
       //case后面的值只能是字面量,不能是变量
       //case输出的值不允许重复
    
       //break不可以省略,省略会导致case穿透 
       // case穿透 -->程序会一直执行直到遇到break或大括号为止;
    
         case 值1:
              语句体1;
              break;
         case 值2:
              语句体2;
              break;
         ...
         default:
              语句体n+1;
              break;
       //default位置任意,习惯性写在switch语句最后
       //default可以省略,语法没有问题,但是不建议省略
    }
  • 执行流程:(1)首先计算表达式的值;(2)依次和case后面的值就行比较,如果有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结束;(3)如果所有的case后面的值和表达式的值都不匹配,就会执行default里面的语句体,然后结束整个switch语句;
  • switch语句后()中表达式可以是:int、short、byte、枚举类型、string字符串。

2.1 if的第三种格式与switch语句使用场景区别:

格式内容
if的第三种格式一般用于对应范围的判断
switch语句把有限个数据一一列举出来,让我们任选其一

三.循环结构

1. for循环

  • 格式:
    for(初始化语句 ; 条件判断语句 ; 条件控制语句  ){
      循环体语句
    }
    
    //核心:
      //初始化语句只执行一次
      //判断语句为true ,循环继续
      //判断语句为false, 循环解释
  • 执行流程:(1) 执行初始化语句; (2)执行条件判断语句,看其结果是true还是false:①如果是false,循环结束; ② 如果是true ,执行循环体语句; (三)执行条件控制语句; (4) 回到(2)继续执行条件判断语句;

2. while循环

格式:

初始化语句 ;
while(条件判断语句){
       循环体语句;
       条件控制语句 ;
}

//初始化语句只执行一次
//判断语句为true,循环继续
//判断语句为false,循环结束

2.1 for循环和while循环的对比:

相同点不同点
运行规则都是一样的
  • for循环中,控制循环的变量,因为归属for循环的语法结构,在for循环结束后,就不能再次被访问到了
  • while循环中,控制循环的变量,对于while循环来说不归属其他语法结构中,在while循环结束后,该变量还可以继续使用
//for循环
int i = 0;
for(; i < 4; i ++){
  System.out.println(i);
}

//for循环:知道循环次数 或者 循环范围

//while循环
int i = 0;
while(i < 4){
   i++;
}
System.out.println(i);

// while循环:不知道循环的次数和范围,只知道循环的结束条件

3. do..while循环

初始化语句;
do{
   循环体语句;
   条件控制语句;
}while(条件判断语句);

//先执行后判断

 4. 无限循环语句

概念:使程序循环一直停不下来

类别:

//循环 -> 条件语句

//for循环
for(; ;){
  System.out.println("");
}

//while循环
while(true){
  System.out.println("");
}


//do..while循环
do{
 System.out.println("");
}while(true);

 5. 跳转控制语句

  • continue: 跳出本次循环 ,继续执行下次循环
    public static void main(String[] args) {
    	//1.跳出某一次循环
    	for (int i = 1; i < 5; i++) {
    		//结束本次循环,继续下次循环
    		continue;
    	}
    	System.out.println("");
    }
  • break:结束整个循环

    public static void main(String[] args) {
    		// 1.结束整个循环
    		for (int i = 1; i < 5; i++) {
    			if (i == 3) {
    				// 结束整个循环
    				break;
    			}
    		}
    		System.out.println("");
    	}

四、循环高级综合练习

4.1 案例1:逢7过

朋友聚会的时候可能会玩一个游戏:逢7过
游戏规则:从任意一个数字开始报数,当你要报的数字是包含7或者是7的倍数时都要说过:过
需求:使用程序在控制台打印出1-100之间的满足逢七必过规则的数据

public static void main(String[] args) {
	//1.得到1~100之间的每一个数字
		for(int i = 1;i< 100 ; i++) {
			//判断每一个数字
			//如果符合规则,被打印出来
			//如果不符合规则就打印真是的数字
			if(i % 10 == 7 || i /10 % 10 ==7 || i % 7 == 0) {
				System.out.println("过");
				continue;
			}
			System.out.println(i);
		}

4.2  案例2 :求平方根

需求:键盘录入一个大于等于2的整数x,计算并返回x的平方根。
结果只保留整数部分 ,小数部分将被舍去。

public static void main(String[] args) {
	  //在代码中:
	  //从1开始循环,拿着数字的平方根跟原来的数字进行比较
	  //如果小于的,那么继续往后判断
	  //如果相等,那么当前数字就是平方根
	  //如果大于的,那么前一个数字就是平方根的整数部分
		
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一个数:");
		int number = sc.nextInt();
		
		for(int i = 1;i <= number ; i++) {
			if( i * i == number) {
				System.out.println(i +"就是"+number+"的平方根");
				break;
			}else if (i * i >number) {
				System.err.println( (i - 1) + "就是" + number + "平方根的整数部分");
				break;
			}
		}

运行结果:

 4.3 案例3:求质数

需求:键盘录入一个正整数x,判断该整数是否为一个质数。

	public static void main(String[] args) {
		// 质数:如果一个质数只能被1和其本身整除,那么这个数就是质数
		// 定义一个变量,表示标记
		// 标记number是否为一个质数
		boolean flag = true;

		// 1.分析:
		// 键盘录入一个正整数
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一个正整数:");
		int number = sc.nextInt();

		// 2.判断
		// 写一个循环,从2开始判断,一直判断到number - 1为止
		// 看这个范围内,有没有数字可以被number整除
		for (int i = 2; i < number; i++) {
			if (number % i == 0) {
				flag = false;
				// System.out.println(number + "不是一个质数");
				break;
			}
			// else {
			// System.out.println(number +"是一个质数");
			// } // 9 % 2 = 1 跳出循环但是 9 不是质数
		}
		if (flag) {
			System.out.println(number + "是一个质数");
		} else {
			System.out.println(number + "不是一个质数");
		}
		// 只有当这个循环结束了,表明这个范围之内的所有数字都判断完毕了
		// 此时才能判断number为一个质数

	}

运算结果:

 4.4 案例4:猜数字小游戏

需求:程序自动生成一个1-100之间的随机数字,使用程序实现猜出这个数字是多少?


知识扩展:获取随机数 -> Java帮我们写好了一个类叫Random,这个类就可以生成一个随机数。

  • ①导包: Random这个类在哪
    import java.util.Random
    //导包的动作必须出现在类定义的上边
  • ②创建对象:表示我要开始使用Random这个类了
    Random r = new Random();
    //上面这个格式里面,只有r是变量名,可以变,其他都不允许改变
  • ③生成随机数:真正开始干活了

    int number = r.nextInt(随机数的范围);
    //上边这个格式里面,只有number是变量名,可以变,其他都不允许改变

public static void main(String[] args) {

		Random r = new Random();
		int number = r.nextInt(100) + 1; // 1~100
		System.out.println(number);

		// 秘诀:
		// 用来生成任意数到任意数的随机数
		// 1.让这个范围头尾都减去1,让这个范围从0开始
		// 2.尾巴+1
		// 最后的结果,再加上第一步减去的值
		/*
		 * Random r= new Random(); 
		 * int number = r.nextInt(9) + 7; //7~15
		 * System.out.println(number);
		 */
	}
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hgngy.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值