javaSE--基础三(循环语句,随机数)

switch语句

当需要在几个固定的值中,选择一个种情况来执行,这个时候可以选择switch语句

int n=; //n的值可能是下面的几种情况
switch(n){
    case1:
        语句体;
        break;
    case2:
        语句体;
        break;
   	...
    default:
        语句体;
        break;
}

注意事项:
	1)case后面的值不能重复
	2)case后面的值只能是常量,不能是变量
	3)switch表达式的数据类型,只能是固定的几种
		byte short int char
		JDK7以后可以是String		
		JDK5以后可以是枚举(后面学) 
    4)break是可以省略,但是会穿透

人品计算器,键盘录入学生的姓名,输出对应的人品。

import java.util.Scanner;
public class SwitchDemo{
    public static void main(String[] args){
        //1.键盘录入学生的姓名
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入你的姓名;");
        //int num=sc.nextInt(); //输入整数
		String name=sc.nextLine(); //字符串类型用String表示
        
		System.out.println("你录入的姓名是:"+name); 
		
		//2.根据姓名,输出对应的人品
		//把姓名转换为整数
		int num=name.hashCode(); 
		System.out.println(num);
		//取整数的个位数
		num=num%10;  
		
		//再对0~9进行匹配,计算对应的人品 
		switch(num){
			case 0:
				System.out.println("你的人品,非常差,不要靠近我");
				break;
			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;
			case 8:
				System.out.println("优秀");
				break;	
			case 9:
				System.out.println("你的人品爆表了,我们做朋友吧");
				break;	
		}
    }
}

演示case穿透现象

//需求:键盘录入一个月份,输出对应的季节
/*
	3、4、5  春季
	6、7、8  夏季
	9、10、11 秋季
	12、1、2  冬季
*/

import java.util.Scanner;
public class SwitchDemo4{
	public static void main(String[] args){
		
		//键盘录入月份
		Scanner sc=new Scanner(System.in);
		System.out.println("键盘录入一个整数(月份)");
		int month=sc.nextInt();
		
		//对月份进行匹配
		switch(month){
			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;
			case 12:
			case 1:
			case 2:
				System.out.println("冬季");
				break;
			default:
				System.out.println("你录入的月份不正确");
				break;
		}
		
	}
}

for循环

for循环的格式

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

执行流程:
	1.初始化语句
	2.条件判断
		true: 继续执行第3false: 循环结束,执行for循环以后的语句
	3.执行循环语句体;
	4.条件控制
	5.回到2步骤继续执行

案例1:循环打印输出10个HelloWorld


//循环打印输出10个HelloWorld
for(int i=1;i<=10;i++){
    System.out.println(i+"....HelloWorld");  
} 

练习1:打印输出1~50之间的所有奇数

/*
思路:
	1)循环1~50之间所有的整数
	2)判断这个整数是否为奇数,如果是就打印
*/
for(int i=1;i<=50;i++){
    //判断i是否为奇数
    if(i%2!=0){
        System.out.println(i);
    }
}

练习2:打印输出1~50之间的所有偶数

/*
思路:
	1)循环1~50之间所有的整数
	2)判断这个整数是否为偶数,如果是就打印
*/
for(int i=1;i<=50;i++){
    //判断i是否为偶数
    if(i%2==0){
        System.out.println(i);
    }
}

求和案例

求和案例的思路
	1)定义一个求和变量sum
	2)遍历需要求和的数据,把这些数据和sum累加
	3)最终sum就和所有数据的和

需求:求1~100之间所有整数的和

//1)定义一个求和变量sum
int sum=0;
//2)遍历需要求和的数据,把这些数据和sum累加
for(int i=1;i<=100;i++){
    sum+=i;
}
//3)最终sum就和所有数据的和
System.out.println("1~100所有整数的和:"+sum);

需求:求1~100之间偶数的和

方法1

//定义一个求和变量
int sum = 0;
//循环1~100之间所有的整数
for(int i =1; i <= 100; i++){
    //判断i这个数是否为偶数
    if(i % 2 ==0){
        sum += i;
    }
}
System.out.println("1-100中所有偶数的和为:" + sum);

方法2

//定义一个求和变量
int sum = 0;

//循环1~100之间所有的偶数
for(int i =2; i <= 100; i+=2){
    sum+=i;
}
System.out.println("1-100中所有偶数的和为:" + sum);

水仙花数

/*
什么是水仙花数:水仙花数是一个三位数,每一位数字的立方和等于该数本身
	举例:153=1*1*1+5*5*5+3*3*3
	
思路:
	1)遍历所有的三位数
	2)获取每一个三位数的个位、十位、和百位
	3)判断这个三位数数是否满足水仙花数的规则
		这个数=个位*个位*个位+十位*十位*十位+百位*百位*百位
	4)把满足条件的三位数打印数出来
*/

for(int i=100;i<=999;i++){
    int ge=i%10;
    int shi=i/10%10;
    int bai=i/100%10; 
    
    if(ge*ge*ge+shi*shi*shi+bai*bai*bai==i){
        System.out.println(i); 
    } 
}

数据统计

涉及到数据统计的需求,一般都需要在循环之前定义一个计数器,在满足条件的情况下计数器累加。

//需求:打印1~100之间的整数,每5个换一行
int count=0; //计数器

for(int i=1;i<=100;i++){
    System.out.print(i+" ");
    count++; 
    //判断计数器是否为5的倍数
    if(count%5==0){
        System.out.println(); //换行
    }
}

while循环

格式

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

执行流程:
	1.初始化语句
	2.条件判断
		true: 继续执行第3false: 循环结束,执行for循环以后的语句
	3.执行循环语句体;
	4.条件控制
	5.回到2步骤继续执行

while循环案例:打印输出10个HelloWorld

int i=1;
while(i<=10){
    System.out.println(i+"...HelloWorld");
    i++;
}

折纸问题

假设有一张足够大的纸0.1毫米,请问折叠多少次,可以到达珠穆朗玛峰的高度8844430毫米

/*
思路:
	1.纸的初始化高度为0.1毫米
		double h=0.1;
	2.每次折叠厚度是原来的2倍
		h*=2;
	3.把折叠的过程循环执行,循环条件h<8844430
	4.定义计数器来统计次数,每次折叠计数器累加
*/

//计数器
int count=0;
//初始化高度
double h=0.1;
//循环折叠的过程 
while(h<8844430){
    h*=2; //每次折叠厚度是原来的2倍
    count++;
}
System.out.println("一共折叠:"+count+"次");  

do…while循环

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

特点:不管条件是否成立,循环语句体至少执行一次。

三种循环的区别

forwhiledo...while的区别
	forwhile循环:  必须满足条件才执行
	do...while: 不管条件是否成立,循环语句体至少执行一次。

forwhile的区别
	for循环:控制循环的变量,只能在循环里面使用
	while循环:控制循环的变量,可以在循环外面使用

如何选择使用哪种循环
	知道次数,选择使用for循环
	不知道次数,选择使用while循环

死循环

循环条件一直为true的循环叫死循环(停不下来的循环就叫死循环)

for(;;){
	System.out.println("黑马程序员");
}

while(true){
	System.out.println("黑马程序员");
}

do{
    System.out.println("黑马程序员");
}while(true);

注意:死循环下面的代码是执行不到的

跳转语句

break的使用场景
	1)switch语句:遇到break结束,没有遇到break穿透
	2)循环语句中:结束(中断,跳出)循环
 
continue使用场景
	场景:只能在循环语句中使用
	作用:结束本次循环,进入下一次循环
	
【带标号的跳出】:
	当循环语句和switch语句嵌套时,break只能跳出单层循环或者switch. 如想跳出外层循环,必须给外层循环添加		一个标号,跳转到标号的位置。
	wh:while(条件){
		switch(表达式){
			case:
				//break; //跳出switch
				break wh; //跳转到外层循环
			...
		}
	}

使用跳转语句改写折纸问题

/*
思路:
	1)使用死循环来做折纸的过程
		h*=2;
	2)每次折叠之后,判断是否到达珠峰的高度
		如果到达:跳出循环
*/
//定义计数器
int count=0;
//初始化高度
double h=0.1;
while(true){
    h*=2;
    count++; 
    
    //每次折叠之后,判断是否到达珠峰的高度
    if(h>=8844430){
        break; 
    }
} 
//打印计数器
System.out.println("一共折叠"+count+"次");

随机数

//1.导包
import java.util.Random;

//2.创建Random对象
Random r=new Random();

//3.生成指定范围的随机整数、
int num1=r.nextInt(10); //范围[0,9]
int num2=r.nextInt(11); //范围[0,10]
int num3=r.nextInt(10)+1; //范围[1,10] 
int num4=r.nextInt(71)+50;//范围[50,120] -50 --> [0,70]+50 -->[50,120] 

猜数字小游戏

生成一个[1,100]范围内的随机数,键盘录入猜这个数字是多少。如果小了,输出猜小了;如果大了,输出猜大了;如果相等,就输出猜中了。

/*
思路:
	//1.生成一个[1,100]范围内的随机数
	//2.键盘录入猜这个数字是多少
	//3.比较录入的整数和随机数的大小
		如果比随机数大:输出猜大了
		如果比随机数小:输出猜小了
		如果和随机数相同:输出猜中了
*/
import java.util.Random;
import java.util.Scanner;

public class GuessNum{
	public static void main(String[] args){
		//1.生成一个[1,100]范围内的随机数
		Random r=new Random();
		int num=r.nextInt(100)+1;

		while(true){
			//2.键盘录入猜这个数字是多少
			Scanner sc=new Scanner(System.in);
			System.out.println("请输入你猜的数字[1,100]:");
			int myNum=sc.nextInt();

			//3.比较录入的整数和随机数的大小
			if(myNum>num){
				System.out.println("猜大了");
			}else if(myNum<num){
				System.out.println("猜小了");
			}else{
				System.out.println("猜中了");
				break; //猜中了,就不猜了。
			}
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值