Java-循环结构、流程控制语句 循环中的break、continue、随机数Random类

循环结构

概念:通过某个条件,使一段代码周而复始的执行。

循环的组成部分:

初始部分:循环用以判断的变量

循环条件:决定是否继续循环的依据

循环操作:单次执行的逻辑代码或任务(一次循环要做的事情)

迭代部分:控制循环条件的增量

while循环

语法:

        whlie(布尔表达式){

                //逻辑代码(循环操作)

}

执行流程:

先对布尔表达式进行判断,结果为true,则执行逻辑代码。

本次执行完毕后,再次进行判断,结果仍旧为true,则再次执行逻辑代码。

直至布尔表达式的结果为false时,才会退出循环结构,执行后续代码。

基本结构:

public class TestWhile{
	public static void main(String[]args){
		
		//要求:循环打印10次HelloWorld
		int i = 1;
		
		//首次判断时,条件满足且条件没有发生改变,永远满足,造成死循环
		while (i <= 10){
			System.out.println("HelloWorld");
            i++;//条件改变
		}
		System.out.println("程序结束");
	}
}

while的特点

特点:首次即有入口条件,先判断、再执行,适用于循环次数明确的情况。

题:计算1+2+3+4...+99+100的总和

public class testWhile2{
	public static void main(String[]args){
		//1-100之间所有数字(100个数字)的和
		
		/*
			思路:
			1.先拿到1~100之间的每个数字
			2.将这100个数字进行相加求和
		
		int i = 1;
		int sun = 0;
		
		//循环 改变i的值
		while(i <=100){  //循环次数明确
			sum = sum + i;//循环操作
			i++;//迭代部分;循环操作的中间变量
		}
		
		*/
		
		int i = 1;
		int sum = 0;
		while(i <= 100){
			sum = sum + i;
			i++;
		}
		System.out.println("总和为:"+ sum);//5050
	}
}

题:计算1~100之间的所有偶数的和。

public class TestWhile3{
	
	public static void main(String[]args){
		//1~100之间所有偶数和
		int i = 1;
		int sum = 0;
		
		while(i <=100){
			if(i % 2 == 0){
				sum = sum + i ;
			}
			i++;
		}
		
		System.out.println("偶数和是:" + sum);
	}
	
}

 do while

语法:

        do{

                代码逻辑(循环操作)

        }whlie(布尔表达式);

执行流程:

先执行一次循环操作,再进行布尔表达式的判断。

如果结果为ture,则再执行循环操作。

如果结果为false,才会退出循环结构,执行后续代码。

应用场景:适用于循环次数不明确的情况。

do while的特点:

 题:检查学生作业完成情况,输入教师评语,决定学生是否需要抄写代码。

import java.util.Scanner;

public class TestDoWhile2{
	
	public  static void main(String[]args){
		
		//1.同学们先写一遍作业
		//2.由老师检查(评语:y/n)
		//3.根据检查的结果,决定是否需要重新抄写
		
		Scanner input = new Scanner(System.in);
		char answer;
		do{
			System.out.println("抄写一遍作业...");
			
			System.out.println("请老师根据当此的完成情况输入评语:");
			
			//评语
			answer =  input.next().charAt(0);
		}while(answer != 'y');
		
		System.out.println("作业已完成...");
	}
}

for循环

for循环语法:

        for(1.初始部分;2.循环条件;4.迭代部分){

                3.循环操作

        }

执行流程:

首次执行初始部分(仅一次)。

对布尔表达式进行判断,结果为true,则执行逻辑代码。

特点:

public class TestFor{
	
	public static void main(String[]args){
	
	//打印100遍HelloWorld
	//while改为for,1.更换关键字  2.在布尔表达式前后各加一个";"
		
		for(int i = 1;i<=100;i++){
			System.out.println("HelloWorld"+i);
		}
		System.out.println("程序结束");
	}
}

 题:控制台输入整数n,计算n的阶乘(!n)。例:1*2*3...*n

import java.util.Scanner;
public class TestFor2{
	public static void main(String[]args){
		//阶乘 例如:5的阶乘等于1*2*3*4*5
		
		Scanner input = new Scanner(System.in);
		System.out.println("请输入一个需要计算阶乘的值:");
		
		
		int target = input.nextInt();//接收一个目标值,计算该值的阶乘
		
		int sum =1;//注意:int类型的sum,最多计算到12的阶乘,如果计算13的阶乘,会超过int的取值范围,不精确,可以改为long类型
		
		for(int i = 1;i<=target; i++){
			
			//相乘求积
			sum = sum * i;
			
		}
		
		System.out.println("阶乘的积为:" + sum);
	}
}

题:计算一个班级的五位同学的平均分

import java.util.Scanner;

public class TestFor3{
	
	public  static void main(String[]args){
		
		//计算一个班的5位同学的平均分
		
		Scanner input = new Scanner(System.in);
		
		double sum = 0.0;
		
		for(int i = 1; i<=5;i++){
			System.out.println("请输入第"+ i + "位同学的成绩:");
			
			double score = input.nextDouble();
			
			sum = sum + score;//把每一位同学的成绩加入到sum中
		}
		
		//计算总分与平均分
		double avg = sum / 5;
		System.out.println("五位同学的平均分为:"+ avg);
		
	}
}

流程控制语句:

break: 终止、跳出switch、以及所有的循环结构。

continue:用于跳出当前循环的当次执行,进入下一个循环。

注意:

break:只能用于结束所在循环,或者结束所在switch分支的执行。

 continue:只能在循环中进行使用。

public class TestBreak{
	
	public static void main(String[]args){
		
		//break的基本应用
		for(int i =1; i<=10;i++){
			if(i == 5){
				break;//跳出整个循环
			}
			System.out.println("当前次数:"+1);
		}
		System.out.print("程序结束");

	}
}
import java.util.Scanner;

public class TestBreak2{
	
	public static void main(String[]args){
		
		Scanner input = new Scanner(System.in);
		
		double sum =0.0;
		int i =1;
		for(;i<=5;i++){
			
			System.out.println("请输入第" + i + "位同学的成绩:");
			double score = input.nextDouble();//如果录入学生的成绩是非法数据,则所有成绩作废
			
			if(score < 0 || score > 100){
				//非法数据
				break;
			}
			sum = sum + score;
		}
		if(i==6){
			double avg = sum / 5;
			System.out.println("5位同学的平均分位:" + avg);
		}else{
			System.out.println("输入有误,请重新运行程序,并输入成绩!");
		}
		
	}
}

continue:结束本次,进入下一次循环。

 题:

import java.util.Scanner;

public class TestGuess{
	
	public static void main(String[]args){
		Scanner input = new Scanner(System.in);
		//人机猜拳(1.剪刀、2.石头、3.布)
		/*
			1.先完成可以比较一次的版本(没有循环,只有电脑获得一个随机数、玩家输入一个,多重if)
			2.固定循环3次
			3.双方谁率先达到连胜2局,则退出整个循环,break(添加2个计数器)
			4.平局,不计算总局数(平局,continue,跳过写在最后的i++)
		*/
		
		int computerCount =0;//电脑的获胜次数
		int  playerCount = 0; //玩家的获胜次数
		
		for(int i =1; i<=3;){
		
			//随机产生1、2、3的整数
			java.util.Random random = new java.util.Random();
			int computer = random.nextInt(3) + 1;//random.nextInt(3)表示随机获得0、1、2;追加之后就变为了1、2、3
			
			System.out.println("请玩家输入数字(1.剪刀、2.石头、3.布)");
			int player = input.nextInt();
			
			//比较猜拳
			if(computer == player){  //平局
				System.out.println("平局,再接再厉!");
				continue//不加; 
				
			}else if((player==1 && computer == 3) || (player == 2 && computer == 1) ||(player == 3 && computer ==2)){  //玩家胜
				System.out.println("恭喜玩家胜利");
				playerCount++;//玩家胜率+1
			}else{
				System.out.println("跟我斗,再练100年吧");
				computerCount++;//电脑胜率+1
			}
		
			//判断双方是否已经存在连胜2局的情况
			if(playerCount == 2 ||computerCount == 2){
				break;
			}
			
			i++;
		}
		
		System.out.println("程序结束");
	}
	
}

典型的死循环:

        for( ; true ; ){

        }

嵌套循环

概念:在一个完整的循环结构中,嵌套另一个完整的循环结构。

案例:需求:打印3行5颗星。

public  class TestNested1{
	
	public static void main(String[]args){
		//打印3行5颗星
		
		/*
		//1.在一行中打印5颗星
		for(int j = 1; j <=5;j++){
			System.out.print("*");
		}
		
		
		//2.打印3行(执行3次)
		for(int i = 1;i <=3;i++){
			
		}
		*/
		
		//将2步进行整合
		for(int i = 1;i <=3;i++){       //外层控制行数
			
			for(int j = 1; j <=5;j++){  // 内层控制列数
			System.out.print("*");
			}	
			System.out.println();	   
			
		}
	}
	
}

案例:需求: 计算三个班的5位同学的平均成绩

import java.util.Scanner;

public class TestNested2{
	
	public static void main(String[]args){
		
		Scanner input = new Scanner(System.in);
		
		//1.计算一个班5位同学的平均成绩
		/*
		double sum = 0.0;
		for(int j=1;j <=5;j++){
			System.out.println("请输入第"+ j + "位同学的成绩:");
			double score = input.nextDouble();
			sum = sum + score;  // sum += score;
		}
		double avg = sum / 5;
		System.out.println("平均分是:" + avg);
		
		//2.计算三个班5位同学的平均成绩
		for(int i = 1; i <=3;i++){   // 外层控制的循环次数
		
		}	
		*/
		
		//整合:
		for(int i = 1; i <=3;i++){	//循环次数
		
			//单次的循环操作
			double sum = 0.0;
			for(int j=1;j <=5;j++){
			System.out.println("请输入第"+ j + "位同学的成绩:");
			double score = input.nextDouble();
			sum = sum + score;  // sum += score;
			}
			double avg = sum / 5;
			System.out.println("平均分是:" + avg);	
		}
		
	}
}

嵌套循环案例:

public  class TestNested3{
	
	public static void main(String[]args){
		//*
		//**
		//***

		for(int i = 1;i <=3;i++){
			
			for(int j = 1; j <=i;j++){  //内层的条件,通过外层i的递增,不断地发生变化
			System.out.print("*");
			}	
			System.out.println();	
			
		}
	}
	
}

随机数Random类

1.Random随机数类生成需要几步,具体是什么样的?

导包:import Java.util.Random;

Random r = new Random();

int number = r.nextInt(10);

2.Random随机数如何生成65-91之间的随机数字?

65 - 91 => (0-26) + 65

int number = r.nextInt(27)+65;

import java.util.Random;

public class RannerDemo1{
	
	public static void main(String[]args){
		//目标:学会使用Java提供的随机数类Random
		//1.导包
		//2、创建随机数对象
		Random r = new Random();
		
		//3.调用nextInt功能(方法)可以返回一个整型的随机数
		for(int i  =0;i<10;i++){
			int data = r.nextInt( 10 );//0-9 不包含10(包前不包后)
			System.out.println(data);
		}
		System.out.println("-------------------------------");
		
		//1-10 ==> -1 ==> (0-9)+1
		
		int data = r.nextInt(10) +1;
		System.out.println(data);
		
		System.out.println("-------------------------------");
		
		//3-17  ==> -3  ==> (0-14) + 3
		for(int j =1;j<=20;j++){
			int data1 = r.nextInt(15) +3;
			System.out.println(data1);
		}
		
	}
}
import java.util.Random;
import java.util.Scanner;

public class TestRandom2{
	public static void main(String[]args){
		/*
			需求:随机生成一个1-100之间的数据,提示用户猜测,
				  猜大提示过大,猜小提示过小,直到猜中结束游戏;
		*/
		
		//1.随机生成一个1-100之间的数据
		Random r = new Random();
		int luckNumber = r.nextInt(100) + 1;
		
		//2.使用一个死循环让用户不断地猜测,并给出提示
		Scanner sc = new Scanner(System.in);
		while(true){
			//让用户输入数据猜测
			System.out.println("请您输入猜测的数据(1-100):");
			int guessNumber = sc.nextInt();
			
			//3.判断这个猜测的号码与幸运号码的大小情况
			if(guessNumber > luckNumber){
				System.out.println("您猜测的数据过大~");
			}else if(guessNumber < luckNumber){
				System.out.println("您猜测的数据过小~");
			}else{
				System.out.println("恭喜您猜中了");
				break;
			}
		}
	}
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值