Java基础(三种结构)

本文详细讲解了Java中的流程控制,包括顺序结构、分支(if-else和switch)、循环(for、while、do...while)及其区别,还有随机数生成和跳转控制。通过实例演示,帮助读者理解并掌握编程中的逻辑控制技巧。
摘要由CSDN通过智能技术生成

👨‍💻博客主页:i新木优子👀
🏆Java基础系列教程:传送门💦
🧚‍♂️寄语:汗水是滋养灵魂的甘露,奋斗是实现理想的阶梯👣
🎉欢迎关注🔍点赞👍收藏⭐留言📝
🙏作者水平有限,发现错误欢迎留言轰炸


1.流程控制

1.1流程控制语句分类

  • 顺序结构
  • 分支语句(if, switch)
  • 循环语句(for, while, do…while)

2.顺序结构

顺序结构是程序中最简单最基本的流程结构,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。

顺序结构执行流程图:

3.分支语句

3.1 if语句

3.1.1 if语句格式1

//格式:
if (关系表达式){
    语句体;
}

执行流程:

  • 首先计算关系表达式的值
  • 如果关系表达式的值为true就执行语句体
  • 如果关系表达式的值为false就不执行语句体
  • 继续执行后面的语句内容

package heima;

public class IfDemo {

	public static void main(String[] args) {
		System.out.println("开始");
		
		int a = 10;
		int b = 20;
		
		//判断a和b的值是否相等,如果相等,就在控制台输出:a等于b
		if (a == b) {
			System.out.println("a等于b");
		}
		
		//判断a和c的值是否相等,如果相等,就在控制台输出:a等于c
		int c = 10;
		if (a == c) {
			System.out.println("a等于c");
		}
		
		System.out.println("结束");

	}

}

3.1.2 if语句格式2

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

执行流程:

  • 首先计算关系表达式的值
  • 如果关系表达式的值为true就执行语句体1
  • 如果关系表达式的值为false就执行语句体2
  • 继续执行后面的语句内容

package heima;

public class IfDemo02 {

	public static void main(String[] args) {
		System.out.println("开始");
		
		int a = 10;
		int b = 20;
		//b = 5;
		
		//判断a是否大于b,如果是,在控制台输出:a的值大于b;如果不是,在控制台输出:a的值不大于b
		if (a >b) {
			System.out.println("a的值大于b");
		} else {
			System.out.println("a的值不大于b");
		}
		
		System.out.println("结束");

	}

}

案例:(奇偶数)

需求:任意给出一个整数,请用程序实现判断该整数是奇数还是偶数,并在控制台输出该数是奇数还是偶数

分析:

  • 采用键盘录入一个数据

  • 判断是奇数还是偶数分两种情况,使用if…else结构

  • 判断是否是偶数需要只用取余运算符实现该功能

  • 根据判断情况,在控制台输出对应的内容

    package heima;
    
    import java.util.Scanner;
    
    public class IfTest01 {
    
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		
    		System.out.println("请输入一个整数:");
    		int number = sc.nextInt();
    		
    		if (number%2 == 0) {
    			System.out.println(number + "是偶数");
    		} else {
    			System.out.println(number + "是奇数");
    		}
    
    	}
    
    }
    

3.1.3 if语句格式3

//格式:
if (关系表达式1){
    语句体;
}else if(关系表达式2){
    语句体2;
}
...
else{
    语句体n+1;
}

执行流程:

  • 首先计算关系表达式1的值
  • 如果关系表达式1的值为true,就执行语句体1,值为false就执行语句体2
  • 如果关系表达式1的值为true,就执行语句体2,值为false就执行语句体3
  • 如果没有任何关系表达式为true,就执行语句体n+1

package heima;

import java.util.Scanner;

public class IfDemo03 {

	public static void main(String[] args) {
		System.out.println("开始");
		
		//键盘录入一个星期数(1,2..7),输出对应的星期一、星期二... 
		Scanner sc = new Scanner(System.in);
		
		System.out.println("请输入一个星期数:");
		int week = sc.nextInt();
		
		if (week == 1) {
			System.out.println("星期一");
		} else if (week == 2) {
			System.out.println("星期二");
		} else if (week == 3) {
			System.out.println("星期三");
		} else if (week == 4) {
			System.out.println("星期四");
		} else if (week == 5) {
			System.out.println("星期五");
		} else if (week == 6) {
			System.out.println("星期六");
		} 
		else {
			System.out.println("星期日");
		}
		
		System.out.println("结束");

	}

}

案例:(考试奖励)

需求:小明快要考试了,小明爸爸说根据他不同的考试成绩,送他不同的礼物,如果你可以控制小明的得分,请用程序实现小明后面获得什么样的礼物,并在控制台输出

分析:

  • 小明成绩未知,采用键盘录入的方式
  • 由于奖励较多,属于多种判断
  • 为每种判断设置条件
  • 为每种判断设置对应的奖励
package heima;

import java.util.Scanner;

public class IfTest02 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		System.out.println("请输入一个分数:");
		int score = sc.nextInt();
		
		if (score>=95 && score<=100) {
			System.out.println("自行车");
		} else if (score>=90 && score<=94) {
			System.out.println("游乐场一日游");
		} else if (score>=80 && score<=89) {
			System.out.println("奥特曼一个");
		} else if (score>=0 && score<=79) {
			System.out.println("胖揍一顿");
		}
		else {
			System.out.println("输入分数有误");
		}

	}

}

3.2 switch语句

//格式:
switch(表达式){
    case1:
        语句体1;
        break;
    case2:
        语句体2;
        break;
    ...
    default:
        语句体n+1;
        break;
}
  • case:后面跟的是要和表达式进行比较的值
  • break:表示中断、结束,用来结束switch语句
  • default:所有情况都不匹配时,就执行该处内容,和else相似

执行流程:

  • 首先计算表达式的值

  • 依次和case后面的值进行比较,如果有对应的值就执行相应的语句,遇到break结束

  • 如果所有值都不匹配,就执行default中的语句

     package heima;
    
    import java.util.Scanner;
    
    public class SwitchDemo {
    
    	public static void main(String[] args) {
    		System.out.println("开始");
    		
    		//键盘录入一个星期数(1,2..7),输出对应的星期一、星期二... 
    		Scanner sc = new Scanner(System.in);
    				
    		System.out.println("请输入一个星期数:");
    		int week = sc.nextInt();
    		
    		switch (week) {
    		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;
    		}
    		
    		System.out.println("结束");
    
    	}
    
    }
    

案例:(春夏秋冬)

需求:一年有十二个月,分别属于春夏秋冬四个季节,输入一个月份,判断该月份属于那个季节

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

分析:

  • 键盘输入数据,用变量接受

  • 多种情况判断,switch语句

    package heima;
    
    import java.util.Scanner;
    
    public class SwitchTest {
    
    	public static void main(String[] args) {
    		Scanner sc = new Scanner(System.in);
    		
    		System.out.println("请输入一个月份:");
    		int month = sc.nextInt();
    		
    		//case穿透
    		switch (month) {
    		case 1:
    		case 2:
    		case 12:
    			System.out.println("冬季");
    			break;
    		case 3:
    		case 4:
    		case 5:
    			System.out.println("春季");
    			break;
    		case 6:
    		case 7:
    		case 8:
    			System.out.println("夏季");
    			break;
    		case 9:
    		case 10:
    		case 11:
    			System.out.println("秋季");
    			break;
    		default:
    			System.out.println("输入有误");
    		}
    
    	}
    
    }
    

    注意:在switch语句中,如果case控制语句体后面不写break,将会出现穿透现象,会继续向下执行,直到遇到break语句结束

4.循环语句

循环结构的组成:

  • 初始化语句:表示循环开始时的起始状态,就是循环开始的时候什么样
  • 条件判断语句:表示循环反复执行的条件,就是判断循环是否能一直执行下去
  • 循环体语句:表示循环反复执行的内容,就是循环反复执行的事情
  • 条件控制语句:表示循环执行中每次变换的内容,就是控制循环是否能执行下去

循环结构对应的语法:

  • 初始化语句:这里是一条或多条语句,这些语句可以完成一些初始化的操作
  • 条件判断语句:这里使用一个结果值为boolean类型的表达式,这个表达式决定是否执行循环体,如:a < 3;
  • 循环体语句:这里可以是任意语句,这些语句将反复执行
  • 条件控制语句:这里通常是使用一条语句来改变变量的值,从而达到控制循环是否继续向下执行的效果,如:i++,i–

4.1 for循环

//格式:
for (初始化语句;条件判断语句;条件控制语句){
    循环体语句;
}

执行流程:

  • 1.执行初始化语句

  • 2.执行条件判断语句,看其结果是true还是false

    如果是false,循环结束

    如果是true,继续执行

  • 3.执行循环体语句

  • 4.执行条件控制语句

  • 5.回到2继续执行

package heima;

public class ForDemo {

	public static void main(String[] args) {
		
		for (int i = 0; i < 5; i++) {
			System.out.println("HelloWorld");
		}

	}

}

案例1:(输出数据)

需求:在控制台输出1-5和5-1的数据

package heima;

public class ForTest {
	public static void main(String[] args){
		for (int i = 1; i < 6; i++) {
			System.out.println(i);
		}
		
		for (int i = 5; i > 0; i--) {
			System.out.println(i);
		}
	}

}

案例2:(求和)

需求:求1-50之间的数据和,并将结果输出

package heima;

public class ForTest02 {

	public static void main(String[] args) {
		
		int sum = 0;
		for (int i = 1; i < 51; i++) {
			sum += i;
			//sum += i  -->  sum = sum +i
		}
		
		System.out.println("1-50的数据和是:" + sum);

	}

}

案例3:(求偶数和)

需求:求1-100之间的偶数和,并将结果输出

package heima;

public class ForTest03 {

	public static void main(String[] args) {
		
		int sum = 0;
		
		for (int i = 1; i < 101; i++) {			
			if (i%2 == 0) {
				sum += i;
			}			
		}
		
		System.out.println("1-100之间的偶数和:" + sum);

	}

}

案例4:(水仙花)

需求:在控制台输出所有的”水仙花数“

什么是水仙花数:

  • 水仙花数是一个三位数

  • 水仙花数的个位、十位、百位的数字立方和等于原数

    123 1+8+27=36 36不等于123,所以123不是水仙花数

    371 27+343+1=371 371等于371,所以371是水仙花数

三位数的个位数字如何求:

371 1就是原始数字对10进行取余运算的结果 371 % 10 = 1

三位数的百位数字如何求:

371 3就是原始数字除以100的结果(整除) 371 / 100 = 3

三位数的十位数字如何求:

371 371除以10,可以将7移动到个位上(整除) 371 / 10 = 37

​ 37通过对10进行取余运算可以得到最后一位的值7 37 % 10 = 7

​ 371 / 10 % 10 = 7

任意数字的指定位上的数值如何求:

  • 先使用整除操作将要求的数字移动到个位上,再使用取余操作取出最后一位上的值

    如:123456789 要拿到数字5,先整除10000得到12345,12345对10进行取余得到5

package heima;

public class ForTest04 {

	public static void main(String[] args) {
		
		for (int i = 100; i < 1000; i++) {
			//个位
			int a = i %10;
			//十位
			int b = i / 10 % 10;
			//百位
			int c = i / 10 / 10 % 10;
			
			if (a*a*a + b*b*b +c*c*c == i) {
				System.out.println(i);
			}
			
		}

	}

}

案例5:(统计)

需求:统计”水仙花数“一共有多少个,并将结果输出

package heima;

public class ForTest05 {

	public static void main(String[] args) {
		
		int content = 0;
		
		for (int i = 100; i < 1000; i++) {
			//个位
			int a = i %10;
			//十位
			int b = i / 10 % 10;
			//百位
			int c = i / 10 / 10 % 10;
			
			if (a*a*a + b*b*b +c*c*c == i) {
				content++;
			}
			
		}
		System.out.println("水仙花数共有:" + content + "个");

	}

}

4.2 while循环

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

执行流程:

  • 1.执行初始化语句

  • 2.执行条件判断语句,看其结果是true还是false

    如果是false,循环结束

    如果是true,继续执行

  • 3.执行循环体语句

  • 4.执行条件控制语句

  • 5.回到2继续执行

package heima;

public class WhileDemo {

	public static void main(String[] args) {
		
		int i = 0;
		while (i < 5) {
			System.out.println("HelloWord");
			i++;
			
		}

	}

}

案例:(珠穆朗玛峰)

需求:世界最高峰是珠穆朗玛峰(8844.43米 = 8844430毫米),假如我有一张足够大的纸,它的厚度位0.1毫米,请问我要折叠多少次,才可以折成珠穆朗玛峰的高度?

package heima;

public class WhileTest {

	public static void main(String[] args) {
		
		//定义计数器
		int content = 0;
		//定义纸张厚度
		double paper = 0.1;
		//定义珠峰高度
		int zf = 8844430;
		
		while (paper <= zf) {
			paper *= 2;
			content++;
			
		}
		System.out.println("需要折叠:" + content + "次" );

	}

}

4.3 do…while循环

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

执行流程:

  • 1.执行初始化语句

  • 2.执行循环体语句

  • 3.执行条件控制语句

  • 4.执行条件判断语句,看其结果是true还是false

    如果是false,循环结束

    如果是true,继续执行

  • 5.回到2继续执行

package heima;

public class DoWhileDemo {

	public static void main(String[] args) {
		
		int i = 0;
		do {
			System.out.println("HelloWorld");
			i++;
		} while (i < 5);

	}

}

4.4三种循环的区别

三种循环的区别:

  • for循环和while循环先判断条件是否成立,然后决定是否执行循环体(先判断后执行)
  • do…while循环先执行一次,然后判断条件是否成立,是否继续执行循环体(先执行后判断)

for和while的区别:

  • 条件控制语句所控制的自增变量,因为归属for循环的语法结构中,在for循环结束后,就不能再次被访问
  • 条件控制语句所控制的自增变量,对于while循环来说不归属其语法结构中,再while循环结束后,该变量还可以继续使用

5.跳转控制语句

4.1跳转控制语句概述

  • continue 用在循环中,基于条件控制,跳过某次循环体内容执行,继续下一次循环
  • break 用在循环中,基于条件控制,终止循环内容的执行,也就是说结束当前的整个循环
package heima;

public class ControlDemo {

	public static void main(String[] args) {
		
		for (int i = 1; i < 6; i++) {
			if (i % 2 ==0) {
				continue;
				//break;
			}
			System.out.println(i);
		}

	}

}

6.循环嵌套

package heima;

public class ForForDemo {

	public static void main(String[] args) {
		
		for (int hour = 0; hour < 24; hour++) {
			for (int minute = 0; minute < 60; minute++) {
				System.out.println(hour + "时" + minute + "分");
			}

		}
		
	}

}

7. Random

7.1 Random的作用和使用步骤

作用:用于产生一个随机数

使用步骤:

  • 导包

    import java.util.Random
    
  • 创建对象

    Random r = new Random();
    //上面除了r是变量名可以变,其他的都不允许改变
    
  • 获取随机数

    int number = r.nextInt(10)  // [0,10),包括0,不包括10
    //上面除了number是变量名可以变,数字10可以变,其他的都不允许改变
    
    package heima;
    
    import java.util.Random;
    
    public class RandomDemo {
    
    	public static void main(String[] args) {
    		
    		Random r = new Random();
    		
    		for (int i = 0; i < 10; i++) {
    			int number = r.nextInt(10);
    			System.out.println("number:" + number);
    
    		}	
    		
    	}
    	
    }
    

案例:(猜数字)

需求:程序自动生成一个1-100之间的数字,当猜错了给出相应的提示

package heima;

import java.util.Random;
import java.util.Scanner;

public class RandomTest {

	public static void main(String[] args) {
		
		Random r = new Random();
		int number = r.nextInt(101);
		
		while (true) {
			Scanner sc = new Scanner(System.in);
			System.out.println("请输入你要猜的数字:");
			int guessNumber = sc.nextInt();
			
			if (guessNumber > number) {
				System.out.println("你猜的数字大了");
			}  else if (guessNumber < number) {
				System.out.println("你猜的数字小了");
			}else {
				System.out.println("猜对了");
				break;
			}
			
		}
		
		

	}

}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

i新木优子

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

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

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

打赏作者

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

抵扣说明:

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

余额充值