第五章、流程控制语句

目录

一、Scanner类

二、产生随机数

1. Random类

2. Math类

三、流程控制语句

1、顺序流程

2、选择流程

2.1 if语句

2.2 if...else...语句

2.3 if...else if.....else语句

2.4 if语句嵌套

3、分支流程


一、Scanner类

Scanner类和Random类参考视频:https://live.csdn.net/v/282798https://live.csdn.net/v/282798

用户与控制台程序交互,就需要使用Scanner类。类和对象后面会详细讲解,暂时知道如何使用Scanner类即可。

Scanner类属于java.util包中,需提前导入该包才能使用。包的内容,后续也会详细讲解。

Scanner类使用步骤:
1. 使用import,导入java.util.Scanner包
2. 创建Scanner类的对象,Scanner scan = new Scanner(System.in);
3. Scanner对象调用如下方法,不同数据类型,使用不同的方法
        scan.nextInt(); 用于接收键盘输入的整形数据
        scan.next();用于接收键盘输入的字符串类型数据
        scan.nextDouble();用于接收键盘输入的浮点型数据
        scan.nextBoolean();用于接收键盘输入的布尔类型数据

案例一:

import java.util.Scanner;
public class Test {
	public static void main(String[] args) {
		//与用户交互,就是程序要接受用户使用键盘输入的值
		//System.in表示标准的输入设备。默认的standard input device就是键盘。
		//Scanner是一个类,input是Scanner类的对象
		Scanner input = new Scanner(System.in);
		//nextInt(),next()方法来说,程序运行到这种方法时
		//会停止运行(阻塞状态),等待用户从console输入值,用户输入值后,
		//按enter键,input.nextInt(),input.next()可以获得用户输入的值
		//会将输入的值赋值给option变量。然后程序继续执行。
//		System.out.println("请输入一个数字:");
//		int option = input.nextInt();
//		System.out.println(option);
		
		System.out.println("打印输出用户名字:");
		String name = input.next();
		System.out.println(name);
	}
}

案例二:

import java.util.Scanner
public class Test{
	public static void main(String[] args) {
		//第一步创建键盘输入对象
		Scanner input = new Scanner(System.in);
		System.out.println("请输入年龄:");
		/*
		 * 接受键盘输入的数据
		 * 整型:nextInt()
		 * 浮点型:nextDouble()
		 * 字符串:next()
		 */
		String age = input.nextInt();
		//输出接收到的值
		System.out.println("您输入的年龄"+age);
	}
}

案例三:键盘输入两个数,在控制台打印两个数的和

import java.util.Scanner;
public class Test {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入第一个数");
		double number1 = input.nextDouble();
		System.out.println("请输入第二个数");
		double number2 = input.nextDouble();
		System.out.println("两个数的和是"+(number1 + number2));
	}
}

案例四:键盘输入两个男生身高和两个女生身高,在控制台打印男生平均身高比女生平均身高差

import java.util.Scanner;
public class Test {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入第一个男生身高");
		double firstBoy = input.nextDouble();
		System.out.println("请输入第二个男生身高");
		double secondBoy = input.nextDouble();
		System.out.println("请输入第一个女生身高");
		double firstGirl = input.nextDouble();
		System.out.println("请输入第二个女生身高");
		double secondGirl = input.nextDouble();
		double avgBoy = (firstBoy+secondBoy)/2;
		double avgGirl = (firstGirl+secondGirl)/2;
		System.out.println(avgBoy-avgGirl);
	}
}

案例五:超市搞活动,输入四位会员卡号;如果四位会员卡号的和大于20并且第三位数为6的会员,将其定义为幸运用户,奖励棒棒糖一个。

import java.util.Scanner;
public class Test {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入四位会员卡号:");
		int cardNum = input.nextInt();
		//拆分卡号1234
		int g = cardNum%10;
		int s = cardNum/10%10;
		int b = cardNum/100%10;
		int q = cardNum/1000;
		int sum = g+s+b+q;
		System.out.println(sum>20&&s==6?"幸运用户,奖励泡泡堂一个":"很遗憾");
	}
}

二、产生随机数

有两种方式可以产生指定范围内的随机数。一种是Random类;另一种是Math类。

1. Random类

Scanner类和Random类参考视频(通Scanner类):https://live.csdn.net/v/282798https://live.csdn.net/v/282798

Random类,位于java.util包中,使用前必须要引入。

Random类中nextInt(value)方法,可随机产生0 - value-1区间的值。

使用时,必须创建Random类对象,即Random  rand = new Random(),使用rand.nextInt(value)产生随机数。

案例:

/*
 * Random类就是用于产生随机数的。可以使用Random类的对象产生随机数。
 */
public class Test {
	public static void main(String[] args) {
		Random rand = new Random();
		for(int i = 0; i < 10; i++){
//			rand.nextInt(n)
//			表示可以产生随机的整数,范围在[0 ~ n-1]
			System.out.println(rand.nextInt(100));
		}
	}
}

2. Math类

Math类中,包含很多日常和数学相关的有用方法,主要处理算术运算。

Math类中包含一个random()方法,用于产生大于等于0.0,小于1之间的随机数,随机数类型为double。

Math类中所有方法都是静态方法(先知道这个概念,以后会讲解),因此直接使用Math类调用方法即可。如Math.random()。

如果想产生[min_value, max_value)之间的随机数,可使用公式:Math.random()*(max-min)+min

案例一:

public class Test {
	public static void main(String[] args) {
		// 0到1之间的随机数
		double num1 = Math.random();
		System.out.println(num1);
		// 0到10之间的随机整数,必须强制转换成int,会将小数截尾
		int num2 = (int) (Math.random() * 10);
		System.out.println(num2);
		// 3到7之间的随机数
		int num3 = (int) (Math.random() * 4 + 3);
		System.out.println(num3);
		// 随机产生一个[5,10)之间的随机整数
		int num = (int) (Math.random() * 5 + 5);
		System.out.println(num);
	}
}

案例二:模拟彩票系统,输入一个[3,10)之间的数,如果和系统产生的随机数相同,中奖5000万,否则再来一张,至少回个本。

public class Test {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入一个[3,10)之间的数");
		int num = input.nextInt();
		int number = (int) (Math.random() * 7 + 3);
		System.out.println("随机数为" + number);
		if (num == number) {
			System.out.println("中奖5000万");
		} else {
			System.out.println("再来一张,至少回个本");
		}
	}
}

三、流程控制语句

流程控制语句,和我们的人生一样。从生到死,就是顺序执行;在人生中,面临各种各样的选择,平时吃什么,喝什么,择校,上大学,都需要我们选择;在人生阶段性时间内,大部分生活,学习,工作,都遵循循环模式。Java中流程控制语句包含顺序流程,选择流程,循环这几种。

1、顺序流程

顺序流程参考视频:https://live.csdn.net/v/282796https://live.csdn.net/v/282796

顺序流程,直白的说,就是程序一行行执行,直到结束。

2、选择流程

选择流程参考视频:https://live.csdn.net/v/282797https://live.csdn.net/v/282797

选择流程有如下三种场景。

2.1 if语句

语法格式:
        
if( 判断的条件)  {
                判断成立后应该执行的动作;
        }

说明:

         这里的判断条件最后必须是一个boolean值,如果判断条件是true,则执行if后面的{}中的内容;如果判断条件是false,则跳过大括号中的内容,向下继续执行其他内容。
        如果if语句后只有一条语句,可将if后的大括号省略,执行结果不受影响,但是一般不省略。

案例一:

/*
 * 小明考试,如果及格,就允许玩游戏
 */
public class Test {
	public static void main(String[] args) {
		int score = 61;
		if(score>=60){
			System.out.println("允许玩游戏");
		}
		System.out.println("if语句块外面代码");
	}
}

案例二:

/*
 * 小键盘输入一个数,如果大于50且个位为3,就输出幸运号码
 */
public class Test {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入一个数");
		int num = input.nextInt();
		int g = num%10;
		if(num>50&&g==3){
			System.out.println("幸运号码");
		}
	}
}

2.2 if...else...语句

语法格式:

        if( 判断的条件 ){
                判断条件成立后执行的语句;
        }else  {
                判断不成立后执行的语句;
        }

说明:

        判断条件必须是一个boolean值,如果判断条件是true,则执行if后面的{}中的内容;如果判断条件是false,则执行else后面大括号中的内容。

        如果if语句块,else语句块只有一行语句,可不写{},不建议这种方式。

案例一:比较两个数大小并输出

public class Test {
	public static void main(String[] args) {
		int x = 10;
		int y = 5;
		if(x > y){
			System.out.println(x + ">" + y);
		}else{
			System.out.println(x + "<=" + y);
		}
		System.out.println("语句块下面的代码");
	}
}

案例二:键盘输入一个数,判断该数是否为奇数

public class Test {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入一个数");
		int num = input.nextInt();
		if (num % 2 == 0) {
			System.out.println("该数为偶数");
		} else {
			System.out.println("该数为奇数");
		}
	}

案例三:输入小明的数学以及语文成绩,如果其中一门成绩为100并且另一门成绩大于99, 就可以去旅游,否则继续学习。

public class Test {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入语文成绩");
		int chinese = input.nextInt();
		System.out.println("请输入数学成绩");
		int math = input.nextInt();
		if (chinese == 100 && math >= 99 || chinese >= 99 && math == 100) {
			System.out.println("旅游");
		} else {
			System.out.println("继续学习");
		}
	}
}

2.3 if...else if.....else语句

语法格式:

        if( 判断的条件 ){
                判断成立后执行的语句;
        } else  if( 判断的条件 ){
                判断成立后执行的语句;
        }
        ............
        else{
                上述的所有判断都不成立之后执行的语句;
        }

说明:

        当在程序中有多个条件的时候,每个if只能列出其中的一种可能条件,这时在else中就会隐含其他的所有条件,对剩余的条件,还要进行更加具体的细化,这时可以在else 后面继续使用if,区分出其他的各种情况。         

        对于该判断方式,要么遵循从小到大的顺序,要遵循从大到小的顺序。如果顺序改变,程序执行会出现错误,所以要特别注意。

        执行过程如下图:

案例一:通过键盘输入学生的学号,根据学号打印输出名字。1,张三;2,李四;3,王五;其他,不存在。

import java.util.Scanner;

/*
 * 通过键盘输入学生的学号,根据学号打印输出名字。
 * 1,张三;2,李四;3,王五;其他,不存在。
 */
public class Test {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入学生的学号,范围[1-4]:");
		// 接收学生学号
		int id = input.nextInt();
		if (id == 1) {
			System.out.println("张三");
		} else if (id == 2) {
			System.out.println("李四");
		} else if (id == 3) {
			System.out.println("王五");
		} else if (id == 4) {
			System.out.println("赵柳");
		} else {
			System.out.println("您输入的学号为" + id + "不存在");
		}
	}
}

案例二:获取键盘输入的分数,根据以下条件打印输出。
[90, 100],输出A;
[80, 90), 输出B;
[70, 79), 输出C;
[60, 69),输出D;
[0, 60),输出D。

public class Test {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int score=scan.nextInt();

		if(score>=90 && score<=100){
			System.out.println("A");
		}else if(score>=80 && score<=89){
			System.out.println("B");
		}else if(score>=70 && score<=79){
			System.out.println("C");
		}else if(score>=60 && score<=69){
			System.out.println("D");
		}else{
			System.out.println("E");
		}
	}
}

2.4 if语句嵌套

语法格式:

以上三种if语句,根据业务逻辑需要,每个语句块中,仍可以使用if语句。其中一种定义格式如下:

        if(boolean类型的表达式){
              表达式为true执行的结果
              If(){
                        表达式为true执行的结果
                }else{
                        表达式为false执行的结果
                }
        }else{
                表达式为false执行的结果
        }

案例一:100米跑步比赛,如果成绩在12秒,进入决赛。输入性别,如果性别为男,进入男子组,否则进入女子组。

import java.util.Scanner;

public class Test {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入时间:");
		double time = input.nextDouble();
		if (0 < time && time <= 10) {
			System.out.println("恭喜你进入决赛");
			System.out.println("请输入性别");
			String sex = input.next();
			System.out.println(sex);
			if (sex.equals("男")) {
				System.out.println("你进入男子组");
			} else {
				System.out.println("进入女子组");
			}
		} else {
			System.out.println("你的职业生涯到此结束");
		}
	}
}

案例二:请输入高考分数,如果分数大于650,上一本。如果分数大于700, 上王牌专业,否则普通专业。如果分数大于550,上二本, 如果分数大于450,上三本,如果分数大于300,上大专,否则回家搬砖。

import java.util.Scanner;

public class Test {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入分数:");
		double score = input.nextDouble();
		if(score>0 && score<=750){
			if(score>=650 && score<=750){
				if(score>700){
					System.out.println("恭喜你考上一本,并且可以选择王牌专业");
				}else{
					System.out.println("哎呦,不错,可以上一个一本的普通转移");
				}
			}else if(score>550){
				System.out.println("考上二本");
			}else if(score>450){
				System.out.println("考上三本");
			}else if(score>300){
				System.out.println("考上大专");
			}else {
				System.out.println("回家搬砖");
			}
		}else{
			System.out.println("输入错误");
		}
	}
}

案例三:编写一个彩票系统添加一个登录界面

import java.util.Scanner;

public class Test {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.println("----------登录----------");
		System.out.println("请输入用户名");
		String name = input.next();
		System.out.println("请输入密码");
		String password = input.next();
		System.out.println(name+password);
		if(name.equals("岩石") && password.equals("123456")){
			System.out.println("————————欢迎来到反赌彩票网——————");
			System.out.println("请输入一个[3,10)之间的数");
			int num = input.nextInt();
			int number = (int) (Math.random()*7+3);
			System.out.println("随机数为"+number);
			if(num == number){
				System.out.println("中奖5000万");
			}else{
				System.out.println("再来一张,至少回个本");
			}
		}else{
			System.out.println("帐号密码不匹配");
		}
	}
}

3、分支流程

switch语句参考视频:https://live.csdn.net/v/282799https://live.csdn.net/v/282799

分支流程也是选择语句的一种,也称为switch语句。

语法格式:

switch( 表达式 )  {
        case 常量1:
                语句1;
                break;
        case 常量2:
                语句2;
                break;
        case 常量3:
                语句3;
                break;
         ........
        default :
                语句;
                [break;];//可有可无
}

说明:

1. 表达式类型只能是byte,short,char, int类型,JDK5.0后可用enum类型,JDK7.0后可用String类型。
2. case子句后面的常量值类型保持和表达式类型一致或兼容
3. case语句块中,根据实际情况,使用break。一般在每个case语句块中都会加上break。break语句用于跳出switch语句块。
4. default子句,当表达式与case后的常量不匹配的时候,会执行default子句。一般default子句位于最后。default子句后,break语句可有可无。
5. 多个case子句和default子句没有顺序限制。如果default子句不在最后,则必须加上break语句。一般不会这么写。
6. switch语句只能比较离散的数值。if(条件表达式)语句中,条件表达式可以表示一段范围。

案例一:

/*
 * switch
 * 	option及case之后的常量类型,必须为byte, short, char, int.JDK1.5之后
 * 			枚举类型,JDK1.7之后,String
 */
public class Test {
	public static void main(String[] args) {
//		long x = 10L;
//		switch(x){
//		case 10L:
//			System.out.println("===");
//		}
		
		String value = "aaa";
		switch(value){
		case "aaa":
			System.out.println("aaa");
			break;
		default:
			System.out.println("default...");
		}
		
		int option = 1;
		switch(option){
		case 1:
			System.out.println("1");
			break;
		case 2:
			System.out.println("2");
			break;
		case 3:
			System.out.println("3");
			break;
		case 4:
			System.out.println("4");
			break;
		default:
			System.out.println("default");
		}
		
		System.out.println("在switch语句块之外的代码");
	}
}

案例二:根据指定月份,打印该月份所属的季节。
3,4,5为春季 6,7,8为夏季
9,10,11为秋季12,1,2为冬季
用switch-case完成需求。

import java.util.Scanner;

public class Test {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入月份");
		int month = input.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("输入错误");
		}
	}
}

案例三:超市举行活动,满就送!要求用switch完成
购物满300,送330ml可乐一瓶
购物满500,送5斤大米
购物满1000,送鼠标一个
购物满1500,送机械键盘一个

import java.util.Scanner;

public class Test {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入购物金额");
		double money = input.nextDouble();
		int num = (int) (money / 100);
		switch (num) {
		case 0:
		case 1:
		case 2:
			System.out.println("你太抠门了");
			break;
		case 3:
		case 4:
			System.out.println("送330ml可乐一瓶");
			break;
		case 5:
		case 6:
		case 7:
		case 8:
		case 9:
			System.out.println("送5斤大米");
			break;
		case 10:
		case 11:
		case 12:
		case 13:
		case 14:
			System.out.println("送鼠标一个");
			break;
		default:
			System.out.println("送机械键盘一个");
			break;
		}
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

疏竹

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

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

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

打赏作者

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

抵扣说明:

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

余额充值