java基础-流程控制-day04

1. if单分支

public class TestIf01{
	public static void main(String[] args){
		// 对三个数(1-6) 求和
		int num1 = 6;
		int num2 = 6;
		int num3 = 5;
		
		int sum = 0;
		sum += num1;
		sum += num2;
		sum += num3;
		
		System.out.println("总和:"+sum);
		
		// >=14 一等奖
		// >=10 二等奖
		// >=6  三等奖
		// <    四等奖
		
		if (sum>=14){
			System.out.println("一等奖");
		}
		
		if (sum<14&&sum>=10){
			System.out.println("二等奖");
		}
		
		if (sum<10&&sum>=6){
			System.out.println("三等奖");			
		}
		if (sum<6){
			System.out.println("四等奖");			
		}
	}
}

2. if else 多分支

public class TestIf02{
	public static void main(String[] args){
		// 对三个数(1-6) 求和
		int num1 = 6;
		int num2 = 6;
		int num3 = 5;
		
		int sum = 0;
		sum += num1;
		sum += num2;
		sum += num3;
		
		System.out.println("总和:"+sum);
		
		// >=14 一等奖
		// >=10 二等奖
		// >=6  三等奖
		// <6   四等奖
		
		if (sum>=14){
			System.out.println("一等奖");
		}else if(sum>=10){//默认隐含了<14的条件
			System.out.println("二等奖");			
		}else if(sum>=6){
			System.out.println("三等奖");				
		}else{//注意这里不写if 默认隐含了<6的条件
			System.out.println("四等奖");
		}
		
	}
}

3. if else双分支

可以改成 ?:结构

public class TestIf03{
	public static void main(String[] args){
		// 对三个数(1-6) 求和
		int num1 = 6;
		int num2 = 6;
		int num3 = 5;
		
		int sum = 0;
		sum += num1;
		sum += num2;
		sum += num3;
		
		System.out.println("总和:"+sum);
		

		// >=10 中奖
		// <10 没中奖
		
		if (sum>=10){
			System.out.println("中奖");

		}else{
			System.out.println("没中奖");
		}
		
		
		System.out.println(sum>=10?"中奖":"没中奖");
	}
}

4. 随机生成一定区间的整数

	random   --> [0.0, 1.0)  
	*6       --> [0.0, 6.0)
	int      --> [0, 5]
	+1       --> [1, 6]

	(int)(Math.random()*6) +1



	随机生成 32--68之间的一个数
	68-32=36


	random   --> [0.0, 1.0)  
	*35       --> [0.0, 35.0)
	int    --> [0, 34)
	+32    --> [32, 68)

	(int)(Math.random()*35) +32
public class TestIf04{
	public static void main(String[] args){
		
		// 随机生成三个数(1-6) 求和
		int num1 = (int)Math.random()*6 +1;
		System.out.println("num1: "+num1);
		
		int num2 = (int)(Math.random()*6) +1;
		System.out.println("num2: "+num2);

		int num3 = (int)(Math.random()*6) +1;
		System.out.println("num3: "+num3);

		
		int sum = 0;
		sum += num1;
		sum += num2;
		sum += num3;
		
		System.out.println("总和:"+sum);
		

		// >=10 中奖
		// <10 没中奖
		
		if (sum>=10){
			System.out.println("中奖");

		}else{
			System.out.println("没中奖");
		}
		
	}
}

练习1

import java.util.Scanner;

public class TestIf05{
	public static void main(String[] args){
		//输入积分
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入积分:");
		
		if (sc.hasNextInt()==true){
			int score = sc.nextInt();
		    System.out.println("输入积分是:"+score);
			
			if (score>=0){
				//判断折扣
				double discount = 0;
				if (score>=8000){
					discount = 0.6;
				}else if(score>=4000){
					discount = 0.7;
				}else if(score>=2000){
					discount = 0.8;
				}else{
					discount = 0.9;
				}
				System.out.println("折扣:"+discount);
			}else{
			    System.out.println("输入积分不能为负数!");
			}

		}else{
			System.out.println("输入积分不合法");
		}
			

	}
}

练习2;
小朋友搬桌子:
年龄大于7岁,可以搬桌子;
如果年龄大于5岁,性别是男,可以搬桌子;
否则不可以搬动桌子,提示:你还太小了

逻辑分析:

  1. 年龄大于7 男孩女孩都能搬
  2. 年龄小于5 都不能
  3. 年龄 5--7之间 只有男孩才能搬
import java.util.Scanner;

public class TestIf06{
	public static void main(String[] args){
		
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入年龄:");
		
		int age = sc.nextInt();
		if(age>7){
			System.out.println("yes");			
		}else if(age>5){
			System.out.println("请输性别 男--1 女--0");
			int sex = sc.nextInt();
			if(sex==1){
				System.out.println("yes");	
			}else{
				System.out.println("no");
			}
		}else{
			System.out.println("no");				
		}
	}
}

import java.util.Scanner;

public class TestIf06{
	public static void main(String[] args){
		
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入年龄:");
		
		int age = sc.nextInt();
		if(age>7){
			System.out.println("yes");			
		}else if(age>5){
			System.out.println("请输性别: 男 女");
			String input = sc.next();
			char sex = input.charAt(0);
			if(sex=='男'){
				System.out.println("yes");	
			}else{
				System.out.println("no");
			}
		}else{
			System.out.println("no");				
		}
	}
}

5 switch语句

            实现一个功能:
            根据给出的学生分数,判断学生的等级:
            >=90  -----A
            >=80  -----B
            >=70  -----C
            >=60  -----D
            <60   -----E
import java.util.Scanner;

public class TestIf07{
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入分数:");
		
		int score = sc.nextInt();
		/*
		if (score>=90){
			System.out.println("A");
		}else if(score>=80){
			System.out.println("B");
		}
        */		
        switch(score/10){
			case 10:System.out.println("A");break;
			case 9:System.out.println("B");break;
			case 8:System.out.println("C");break;
			case 7:System.out.println("D");break;
			case 6:System.out.println("E");break;
			case 5:
			case 4:
			case 3:
			case 2:
			case 1:
			case 0:
			default:System.out.println("成绩输入错误");

		}	
		/*
		【4】为了防止代码的“穿透”效果:在每个分支后面加上一个关键词break,遇到break这个分支就结束了
        【5】类似else的“兜底”“备胎”的分支:default分支
		*/
	}
}

6. while循环

引入:

public class TestWhile01{
	public static void main(String[] args){
		
		// 实现1+2+3+4+5
		
		int num = 1;
		int sum = 0;
		
		sum += num; //0+1
		
		num++;//2
		sum += num; //0+1+2
		
		num++;//3
		sum += num; //0+1+2+3
		
		num++;//4
		sum += num; //0+1+2+3+4
		
		num++;//5
		sum += num; //0+1+2+3+4+5
		
		System.out.println("sum:"+sum);
		
	}
}

循环4要素:

public class TestWhile02{
	public static void main(String[] args){
		
		// 实现1+2+3+4+5
		
		int num = 1;//[1]初始化
		int sum = 0;
		
		while(num<=5){//[2]条件判断
		
			sum+=num;//[3]循环体
			num++;//[4]迭代
		}
		System.out.println("sum:"+sum);
	}
}

[1]四要素:条件初始化 条件判断 循环体 迭代
[2]执行过程 [1][2][3][4]-->[2][3][4]-->[2][3][4]...
[3]详细过程
num=1, sum=0
准备开始执行第一次循环,判断num<=5-->true--{}执行:sum:1,num:2,第一次循环结束
准备开始执行第二次循环,判断num<=5-->true--{}执行:sum:1+2,num:3,第二次循环结束
准备开始执行第三次循环,判断num<=5-->true--{}执行:sum:1+2+3,num:4,第三次循环结束
准备开始执行第四次循环,判断num<=5-->true--{}执行:sum:1+2+3+4,num:5,第四次循环结束
准备开始执行第五次循环,判断num<=5-->true--{}执行:sum:1+2+3+4+5,num:6,第四次循环结束
准备开始执行第六次循环,判断num<=5-->false--{}不执行,循环结束,

练习:
【1】1+2+3+4+5+。。。。+100
【2】2+4+6+8+。。。。+998+1000
【3】5+10+15+20+。。。+100
【4】99+97+95+。。5+3+1
【5】135791113

public class TestWhile03{
	public static void main(String[] args){
		
		//【1】1+2+3+4+5+。。。。+100
		
		int i = 1;
		int sum = 0;
		while(i<=100){
			sum +=i;
			i++;
		}
		System.out.println("结果:"+sum);
		
		//【2】2+4+6+8+。。。。+998+1000
		i = 2;
		sum = 0;
		while(i<=100){
			sum +=i;
			i+=2;
		}
		System.out.println("结果:"+sum);		
		
		//【3】5+10+15+20+。。。+100
		i = 15;
		sum = 0;
		while(i<=100){
			sum +=i;
			i+=5;
		}
		System.out.println("结果:"+sum);	
		
		
		//【4】99+97+95+。。5+3+1
		i = 99;
		sum = 0;
		while(i>=1){
			sum+=i;
			i-=2;
		}
		System.out.println("结果:"+sum);	
		
		
		//【5】1*3*5*7*9*11*13
		
		i = 1;
		sum = 1;
		while(i<=13){
			sum*=i;
			i+=2;
		}
		System.out.println("结果:"+sum);	

	}
}

do-while循环
使用场景: 先要考试 等出了结果 才知道要不要参加下一次考试
循环体 先要执行一遍 再去判断条件
--条件true 继续进入下一次循环
--条件false退出循环

do{考试
}while(通过
)

7. for循环

for(条件初始化;条件判断;迭代){
循环体
}

public class TestFor01{
	public static void main(String[] args){
		// 1+2+3+4+5
		int sum = 0;
		
		for(int i=0;i<=5;i++){
			sum+=i;
		}
		
		System.out.println("sum:"+sum);
	}
}

8. break continue return关键字的使用

8.1 break 退出循环

练习:

public class TestFor02{
	public static void main(String[] args){
		// 求和 1—+2+3...+100 当和第一次超过300时退出循环
		int sum = 0;
		
		for(int i=0;i<=100;i++){
			sum+=i;
			
			

			if(sum>300){
				break;
			}
			System.out.println("sum:"+sum);

		}
		
		
	}
}
public class TestFor03{
	public static void main(String[] args){
		// 求和 1—+2+3...+100 当和i=36退出循环
		int sum = 0;
		
		for(int i=0;i<=100;i++){
			sum+=i;
			
			
			System.out.println("i:"+i);
			if(i==36){//如果改成while
				break;
			}

		}
		
		
	}
}
public class TestFor03{
	public static void main(String[] args){
		// 求和 1—+2+3...+100 当和i=36退出循环
		int sum = 0;
		
		for(int i=0;i<=100;i++){
			sum+=i;
			
			System.out.println("i:"+i);
			while(i==36){ 
				break;// 注意这里只会break while循环 for循环不受影响
			}

		}
		
		
	}
}

结果:0-100全部打印

break的打标签使用

public class TestFor04{
	public static void main(String[] args){
		// 求和 1—+2+3...+100 当和i=36退出循环
		int sum = 0;
		
		outer: //给这个for循环打标签
		for(int i=0;i<=100;i++){
			sum+=i;
			
			System.out.println("i:"+i);
			while(i==36){ 
				break outer; //根据标签停止
			}

		}
		
		
	}
}

结果:只输出 0-36

8.2 continue 退出本次迭代

1-->100输出能被6整除的数

public class TestFor05{
	public static void main(String[] args){
		// 1 2 3...100 只输出能被6整除的数
		int sum = 0;
		
		outer: //给这个for循环打标签
		for(int i=0;i<=100;i++){
			sum+=i;
			
			if(i%6==0){
				System.out.println("i:"+i);
			}
			
			}

		
		
	}
}

方式2;不能被6整除的就continue 不打印

public class TestFor05{
	public static void main(String[] args){
		// 1 2 3...100 只输出能被6整除的数
		int sum = 0;
		
		outer: //给这个for循环打标签
		for(int i=0;i<=100;i++){
			sum+=i;
			
			if(i%6!=0){
				continue;
			}
			System.out.println("i:"+i);
			
		}		
	}
}
public class TestFor06{
	public static void main(String[] args){
		//  1 2 3  100 当和i=36 continue
		int sum = 0;
		
		for(int i=0;i<=100;i++){
			sum+=i;
			
			
			if(i==36){ 
				continue;
			}
			
            System.out.println("i:"+i);
		}
		
		
	}
}

结果: 36没打印出来

public class TestFor06{
	public static void main(String[] args){
		//  1 2 3  100 当和i=36 continue
		int sum = 0;
		
		for(int i=0;i<=100;i++){
			sum+=i;
			
			
			while(i==36){ 
			    System.out.println("---->i:"+i);
				continue;
			}
			
            System.out.println("i:"+i);
		}
		
		
	}
}

结果: 0-35打印出来 36死循环

8.3 return 退出方法的执行

public class TestFor06{
	public static void main(String[] args){
		//  1 2 3  100 当和i=36 return
		int sum = 0;
		
		for(int i=0;i<=100;i++){
			sum+=i;
			
			
			if(i==36){ 
			    System.out.println("-----");
				return;
			}
			
            System.out.println("i:"+i);
		}
		
		
	}
}

结果:0-35打印 36只打印--- 退出

9. 练习

9.1 打印1-100能被5整除的数 每行输出6个数

public class TestFor07{
	public static void main(String[] args){
		// 打印1-100能被5整除的数 每行输出6个数
		int count= 0;
		for(int i=1;i<=100;i++){
			if(i%5==0){
				System.out.print(i+"\t");
				if (count%6==0){
					System.out.println();
				}
				count++;
			}
		}
	}
}

9.2 练习

import java.util.Scanner;

public class TestFor08{
	public static void main(String[] args){
		/*
		【1】请录入10个整数,当输入的数是666的时候,退出程序--(被迫退出)。
		【2】判断其中录入正数的个数并输出。
		【3】判断系统的退出状态:是正常退出还是被迫退出。
		*/
		
		boolean flag=true;//默认正常退出
		
		int count = 0;
		for(int i=1;i<=10;i++){
			Scanner sc = new Scanner(System.in);
			System.out.println("请第"+i+"次输入整数:");
			int num = sc.nextInt();
			if(num>0){
				count++;
			}
			if(num==666){
				//System.out.println("被迫退出");
				flag = false;
				break;
			}
		}
        System.out.println("正数的个数:"+count);
		System.out.println(flag?"正常退出":"被迫退出");
	}
}

9.3 打印乘法口诀

public class TestFor09{
	public static void main(String[] args){
		
		
		for(int j=1;j<=9;j++){
			// 1*6=6  2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
			for(int i=1;i<=j;i++){
				System.out.print(i+"*"+j+"="+i*j+"\t");
			}
			System.out.println();
		}
		
		for(int j=9;j>=1;j--){
			// 1*6=6  2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
			for(int i=1;i<=j;i++){
				System.out.print(i+"*"+j+"="+i*j+"\t");
			}
			System.out.println();
		}
	}
}

9.4 打印各种形状

打印 49 由组成的正方形

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

		for(int j=1;j<=4;j++){
			for(int i=1;i<=9;i++){
				System.out.print("*");
			}
			System.out.println();
		}
	
	}
}

前面有5个空格

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

		for(int j=1;j<=4;j++){
			
			for(int i=1;i<=5;i++){
				System.out.print(" ");
			}
			
			for(int i=1;i<=9;i++){
				System.out.print("*");
			}
			System.out.println();
		}
	
	}
}

打印平行四边形

public class TestFor10{
	public static void main(String[] args){
/*               空格数
     *********    5  
    *********     4
   *********      3
  **********      2
*/
	
		for(int j=1;j<=4;j++){
			
			for(int i=1;i<=6-j;i++){
				System.out.print(" ");
			}
			
			for(int i=1;i<=9;i++){
				System.out.print("*");
			}
			System.out.println();
		}
	
	}
}

三角形

public class TestFor11{
	public static void main(String[] args){
/*           *个数   行数
     *        1        1
    ***       3        2
   *****      5        3
  *******     7        4
*/
	
		for(int j=1;j<=4;j++){
			
			for(int i=1;i<=6-j;i++){
				System.out.print(" ");
			}
			
			for(int i=1;i<=2*j-1;i++){
				System.out.print("*");
			}
			System.out.println();
		}
	
	}
}

棱形

public class TestFor12{
	public static void main(String[] args){
/*           *个数   行数  空格
     *        1        1
    ***       3        2
   *****      5        3
  *******     7        4
  
  
   *****      5         1     3
    ***       3         2     4
	 *        1         3     5
			  j        7-2*j
*/
	
		for(int j=1;j<=4;j++){
			
			for(int i=1;i<=6-j;i++){
				System.out.print(" ");
			}
			
			for(int i=1;i<=2*j-1;i++){
				System.out.print("*");
			}
			System.out.println();
		}
		for(int j=1;j<=3;j++){
			for(int i=1;i<=j+2;i++){
				System.out.print(" ");
			}
			
			for(int i=1;i<=7-2*j;i++){
				System.out.print("*");
			}
			System.out.println();
		}
	
	}
}

空心棱形

public class TestFor12{
	public static void main(String[] args){
/*           *个数   行数  空格
     *        1        1
    ***       3        2
   *****      5        3
  *******     7        4
  
  
   *****      5         1     3
    ***       3         2     4
	 *        1         3     5
			  j        7-2*j
*/
	
		for(int j=1;j<=4;j++){
			
			for(int i=1;i<=6-j;i++){
				System.out.print(" ");
			}
			
			for(int i=1;i<=2*j-1;i++){
				
				if(i==1||i==(2*j-1)){
					System.out.print("*");
				}else{
					System.out.print(" ");
				}
			}
			System.out.println();
		}
		for(int j=1;j<=3;j++){
			for(int i=1;i<=j+2;i++){
				System.out.print(" ");
			}
			
			for(int i=1;i<=7-2*j;i++){
				if(i==1||i==(7-2*j)){
					System.out.print("*");
				}else{
					System.out.print(" ");
				}

				
			}
			System.out.println();
		}
	
	}
}


10. 打印菱形的另外一种方式

待补充

11. 百钱买百鸡

待补充

posted @ 2023-09-01 21:30  jack-chen666  阅读(22)  评论(0)    收藏  举报