JAVA中关于分支语句的学习与扩展

JAVA中关于分支语句的学习与扩展

Scanner键盘录入对象和eclipse的一些简单操作:

一. 为什么需要键盘录入数据?

序列

之前我们书写程序时候,数据是固定不变的,但是在开发当中,数据肯定是动态的而不是固定的,所以我们需要把固定的数据更改为键盘录入。
如何使用Scanner键盘录入对象

1、导包
在class修饰的类名上面加入如下语句
import java.util.Scanner;
2、创建对象
Scanner input = new Scanner(System.in);
3、使用变量接收数据
int num = input.nextInt();

二. Scanner键盘录入对象。

// 1、键盘录入两个数,并将这两个数求和,求最大值,并输出
/*
	1.导包
	2.创建键盘输入对象
	3.通过键盘输入给变量赋值
			获取用户输入的类型:
				nextInt(); 获取用户输入的整数
				nextDouble(); 获取用户输入的小数
				nextBoolean(); 获取用户输入的boolean值
				nextLine(); 结果是String类型,获取用户输入的字符串
				next(); 结果是String类型,获取用户输入的字符串
				这些方法统称为阻塞方法
				
				阻塞方法: 程序执行到这个方法的时候,会阻塞主线程,程序不会继续执行,知道用户输入结束,程序继续执行
	
	java.util.InputMismatchException
	异常名称: 输入的类型不匹配异常
	产生原因: 用户输入的类型和接收的类型不一致
	解决办法: 类型匹配即可
*/
// 1.导包
import java.util.Scanner;
public class ScannerDemo {
	public static void main(String[] args) {
		// 2.创建键盘输入对象
		// Scanner input = new Scanner(System.in);
		
		// 提示性语句
		// System.out.print("请输入整数: ");
		// 3.通过键盘输入给变量赋值
		/*int i = input.nextInt();
		System.out.println("你输入的整数是: " + i);
		
		System.out.print("请输入小数: ");
		double j = input.nextDouble();
		System.out.println("你输入的小数是: " + j);
		
		System.out.print("请输入boolean类型: ");
		boolean k = input.nextBoolean();
		System.out.println("你输入的boolean类型是: " + j);
		
		System.out.print("请输入字符串类型: ");
		String str = input.next();
		System.out.println("你输入的字符串类型是: " + str);*/
		
		// 1、键盘录入两个数,并将这两个数求和,求最大值,并输出
		/*
			1.导包
			2.创建键盘输入对象
			3.定义变量获取用户输入的第一个数
			4.定义变量获取用户输入的第二个数
			5.定义求和变量sum来计算两个数的和
			6.定义最大值变量来计算两个数的最大值
			7.输出和以及最大值
		*/
		// 2.创建键盘输入对象
		Scanner input = new Scanner(System.in);
		
		System.out.print("请输入第一个数: ");
		// 3.定义变量获取用户输入的第一个数
		int num1 = input.nextInt();
		System.out.print("请输入第二个数: ");
		// 4.定义变量获取用户输入的第二个数
		int num2 = input.nextInt();
		// 5.定义求和变量sum来计算两个数的和
		int sum = num1 + num2;
		// 6.定义最大值变量来计算两个数的最大值
		int max = num1 > num2 ? num1: num2;
		// 7.输出和以及最大值
		System.out.println("两个数的和为: " + sum + ",两个数的最大值为: " + max);
	}
}

例子:

/*
	2、键盘录入两个数,并判断两个数是否相等 (不要使用if-else)
	提高: 如果两个数相等,输出两个数相等,不相等就输出两个数不相等,同时输出两个数中较大的值
*/
import java.util.Scanner;
public class ScannerDemo02 {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.print("请输入第一个数: ");
		int num1 = input.nextInt();
		System.out.print("请输入第二个数: ");
		int num2 = input.nextInt();
		
		String result = (num1 == num2) ? "两个数相等": ("两个数不相等,并且两个数中最大值为: " + (num1 > num2? num1: num2));//三目运算
		System.out.println(result);
	}
}

三.在eclipse中的简单操作。

package com.sxt;

import java.util.Scanner;

/*
 * Ctrl + - 放大缩小字体
 * Ctrl + Shift + / 注释
 * Ctrl + Shift + \ 反注释
 * Ctrl + / 单行、反注释
 * Ctrl + D 删除一行
 * 
 * Alt + / 代码提示
 * 设置自动提示 Windows - preferences - 输入 Content assistant
 * 
 * 输出语句的三种格式
 * 	syso: 普通输出 
 *  syst: 测试输出
 *  syse: 错误输出
 *  
 * 常用的快捷键
 * 设置快捷键 Windows - preferences - 输入 keys
 * Ctrl + 1 万能键 处理所有的警告和错误信息 【自动修复键】
 * 移动一行 alt + 上下键
 * Ctrl + Alt + Down 复制代码
 * 
 * Ctrl + Shift + O 一键导包
 * 
 * 其他和文本操作相关的快捷键
 * 选中文本操作
 * shift + 上下左右 home end pageup pgup pagedown pgdn
 * 输入文本操作 
 * 	上下左右 end home
 * 	shift + enter 切换到下一行
 *  Ctrl + Shift + Enter 切换到上一行
 */
public class HelloWorld {

	public static void main(String[] args) {
		System.out.println("Hello");
		System.out.println("HelloWorld.main()");
		System.err.println("Error");
		
		Scanner input = new Scanner(System.in);
		
		int i = input.nextInt();
		
		String s = input.next();
		
		
	}

}

if语句的多种运用方法:

一. 单if语句。

package com.sxt.ifdemo;

import java.util.Scanner;

/*
 * Ctrl + Shift + F: 自动格式化代码
 * 
 * 单if语句
 * 需求: 小明考试成绩高于90分,奖励一个桃子
 * 
 * 定义: 针对条件情况单一的时候选择单if语句
 * 
 * 格式:
 * 	if(条件表达式) {
 * 		语句体;
 * 	}
 * 
 * 执行流程:
 * 	1.判断条件表达式是否成立
 * 		成立
 * 			执行语句体
 * 		不成立
 * 			不处理
 * 
 * 特点:
 * 	1.三目运算符Y和Z中只能够写一条语句,if语句可以有多条,能够使用三目改进,尽量使用三目
 *  2.如果if语句中只有一条语句,大括号可以省略不写,建议写上
 *  3.if(score >= 90);{},无论条件是否成立,{}都会被执行
 *  
 * 课堂案例:
 * 	1、张三Java成绩大于98分,而且音乐成绩大于80分,老师奖励他;
 * 	或者Java成绩等于100分,音乐成绩大于70分,老师也可以奖励他。
 *   
 */
public class IfDemo01 {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.print("请输入考试成绩: ");
		double score = input.nextDouble();
		
		// System.out.println(score >= 90 ? "奖励桃子一个": "");
		// if (score >= 90) System.out.println("奖励桃子");
		if (score >= 90) {
			System.out.println("奖励桃子");
		}
		input.close();
	}
}
package com.sxt.ifdemo;

import java.util.Scanner;

/*
 *  张三Java成绩大于98分,而且音乐成绩大于80分
 *  或者
 *  Java成绩等于100分,音乐成绩大于70分
 *  
 *  老师奖励他
 */
public class IfDemo02 {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.print("请输入Java成绩: ");
		double javaScore = input.nextDouble();
		System.out.print("请输入音乐成绩: ");
		double musicScore = input.nextDouble();
		
		if ((javaScore > 98 && musicScore > 80) || (javaScore == 100 && musicScore > 70)) {
			System.out.println("奖");
		}
	}
}

if-else语句

三目运算符和if-else语句。 当二者都可以实现一样的效果,建议使用三目运算符实现。
能用三目运算符实现的都可以使用if-else实现,反之不一定成立。

package com.sxt.ifdemo;

import java.util.Scanner;

/*
 * Ctrl + F11快速运行
 * 需求: 隔壁老王考试成绩大于30分,奖励去隔壁家看电影,否则去隔壁家打牌
 * 
 * 定义: 针对处理两种情况的时候使用if-else语句
 * 
 * 格式:
 * 	if(条件表达式) {
 * 		语句体1;
 * 	} else {
 * 		语句体2;
 * 	}
 * 
 * 执行流程:
 * 	1.判断条件表达式是否成立
 * 		成立
 * 			执行语句体1
 * 		不成立
 * 			执行语句体2
 * 
 *  特点:
 *  	1.条件表达式必须是boolean类型的
 *  	2.如果if或者else语句体中只有一条语句,大括号可以省略,建议不省略
 */
public class IfDemo03 {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.print("请输入考试成绩: ");
		double score = input.nextDouble();
		
		// System.out.println(score > 30 ? "隔壁家看电影": "隔壁家打牌");
		if (score > 30) System.out.println("看电影");
		else System.out.println("打牌");
	}
}

二. 多重if语句。

package com.sxt.ifdemo;

import java.util.Scanner;

/*
 * 多重if语句
 * 需求: 老师批改试卷,
 * 成绩在90分以上的为优秀,
 * 成绩在80-90的为良好,
 * 成绩在60-80的为及格,
 * 60以下的为差,该怎么实现呢?
 * 
 * 定义: 针对多种情况【区间】的时候选择多重if语句
 * 
 * 格式:
 * 	if(布尔表达式1) {
 *		语句块1;
 *	} else if(布尔表达式2) {
 *		语句块2;
 *	}	………
 *	else if(布尔表达式n){
 *		语句块n;
 *	} else {
 *		语句块n+1;
 *	}
 *
 *	执行流程: 
 *	逐条if语句进行判断
 *	条件匹配,进入语句体
 *	否则对if语句继续匹配
 *
 *	特点:
 *		1.if语句和else语句只有一个,elseif语句可以有多个,else语句可以省略
 *		2.无论多重if语句中有多少个语句体,每次只能够执行一个语句体
 *		3.书写选择语句时候,注意一般都会先考虑写完其他情况
 */
public class IfDemo04 {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.print("请输入考试成绩: ");
		double score = input.nextDouble();
		
		/*if (score >= 90) {
			System.out.println("A");
		} else if (score >= 80) {
			System.out.println("B");
		} else if (score >= 60) {
			System.out.println("C");
		} else {
			System.out.println("D");
		}*/
		
		// 增加程序的健壮性
		// || 的反是 && 
		// score > 100 || score < 0 的反条件 score <= 100 && score >= 0
		/*if (score > 100 || score < 0) {
			System.out.println("输入有误");
			//  score <= 100 && score >= 0 ~~~~ score >= 90
			//  score >= 90 && score <= 100
		} else if (score >= 90) {
			System.out.println("A");
		} else if (score >= 80) {
			System.out.println("B");
		} else if (score >= 60) {
			System.out.println("C");
		} else {
			System.out.println("D");
		}*/
		
		// 增加程序的可读性
		if (score > 100 || score < 0) {
			System.out.println("输入有误");
		} else if (score >= 90 && score <= 100) {
			System.out.println("A");
		} else if (score >= 80 && score < 90) {
			System.out.println("B");
		} else if (score >= 60 && score < 80) {
			System.out.println("C");
		} else {
			System.out.println("D");
		}
		
	}
}

三. 嵌套if语句。

package com.sxt.ifdemo;

import java.util.Scanner;

/*
 * 嵌套if语句
 * 需求: 
 * 学校举行运动会,
 * 百米赛跑跑入10秒内的学生有资格进决赛,
 * 根据性别分别进入男子组和女子组
 * 
 * 定义: 针对条件特别复杂的情况,本质还是前三种if语句的相互结合
 * 
 * 格式: 没有固定格式
 * 
 * Debug断点调试
 * 1.定义断点
 * 2.进入Debug模式
 * 
 * 注意:
 * 	1.判断两种类型是否相等
 * 		基本数据类型 == 比较的是数值本身
 * 		引用数据类型 == 比较的地址
 * 
 * 		引用数据类型比较是否相等暂时使用equals方法,后面讲解
 * 2.嵌套if语句慎用,导致程序的可读性降低
 */
public class IfDemo05 {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.print("请输入秒数: ");
		double seconds = input.nextDouble();
		System.out.print("请输入性别: ");
		String gender = input.next();
		
		if (seconds < 10) {
			System.out.println("恭喜进入男子组全球总决赛!!!");
			if (gender.equals("男")) {
				System.out.println("恭喜进入男子组决赛,和博尔特同场竞技");
			} else if (gender.equals("女")) {
				System.out.println("恭喜进入女子组决赛,和女博尔特同场竞技");
			} else {
				System.out.println("人妖组决赛");
			}
		} else {
			System.out.println("来年再战!!!");
			
		}
	}
}

四. switch多分支选择结构。

if语句

表达式的结果是boolean类型 常用于区间判断

switch语句

表达式类型不能是boolean类型,可以是byte short int char String 枚举 常用于等值判断

选择语句的选取:

能用switch语句实现的就一定可以使用if实现,但是反之不一定 如果是区间范围采用if,如果是等值判断使用switch

package com.sxt.switchdemo;

import java.util.Scanner;

/*
 * 电话呼叫案例
	欢迎致电中国电信,查询服务请按1,
	宽带业务咨询办理请按2,
	手机业务咨询办理请按3,
	障碍报修请按4,
	投诉业务请按5,
	转人工服务请按6,
	充值缴费请按7,
	政府及企业客户请按8,
	无需帮助请按请按0,
	控制台输入对应的数字显示对应的服务。
	输入有误显示“对不起您的输入有误”
	
	定义: 常用于等值判断
	
	switch语句
	格式
	switch (表达式)  {
	case 值1 : 
	语句序列;
	[break];
	case 值2:
	 语句序列;
	[break] ;
	     … … …      … …
	[default:
	 默认语句 ;]
	} 
	
	switch语句的特点:
		1.表达式中可以有以下几种类型
			byte short int char String(JDK7) 枚举类型(JDK5)
		2.byte short int char之间在做switch判断的时候都是转换成int类型
		3.可以有多个case子句,但是每一个case子句的取值不能够重复,而且必须是常量
		4.break语句表示退出switch语句体,如果省略break子句,会出现break穿透现象
			break现象: 会逐层向下执行case子句,直到退出switch语句
		5.default子句类似于if中的else子句,一般出现在switch语句的最后面,
			也可以出现在任意位置。
		6.if语句常用于区间判断,而switch常用于等值判断,
		if语句也可以用于等值判断,但是switch语句可读性更强
		能够使用switch语句编写的选择语句,一定可以使用if语句改写,反之不一定
 */
public class SwitchDemo01 {
	public static void main(String[] args) {
		System.out.println("欢迎致电中国电信,查询服务请按1,\r\n" + 
				"	宽带业务咨询办理请按2,\r\n" + 
				"	手机业务咨询办理请按3,\r\n" + 
				"	障碍报修请按4,\r\n" + 
				"	投诉业务请按5,\r\n" + 
				"	转人工服务请按6,\r\n" + 
				"	充值缴费请按7,\r\n" + 
				"	政府及企业客户请按8,\r\n" + 
				"	无需帮助请按请按0,\r\n" + 
				"	控制台输入对应的数字显示对应的服务。\r\n" + 
				"	输入有误显示“对不起您的输入有误”");
		Scanner input = new Scanner(System.in);
		System.out.print("请输入选项: ");
		int choice = input.nextInt();
		String s = "abc";
		switch (choice) {
		
		case 1:
			System.out.println("查询服务");
			break;
		case 2:
			System.out.println("宽带业务咨询办理");
			break;
		
		case 3:
			System.out.println("障碍报修");
			break;
		case 4:
			System.out.println("投诉业务");
		default:
			System.out.println("该选项不存在!!!");
			// break;
		}
		
		System.out.println("over");
	}
}
package com.sxt.switchdemo;

import java.util.Scanner;

/*
 * 控制台显示如下选择题:
	1.执行下列语句,变量i的值是:
	byte i = 127;
	i =i+ 2;
	A 0					B 编译不能通过
	C 运行时抛出异常		D -127
	请选择你的答案:
	这里通过键盘录入,根据录入对应的选项显示不同的效果
	正确显示 恭喜您!回答正确
	错误显示 对不起!回答错误
	输入错误的选项显示 您输入的选项有误
 */
public class SwitchDemo02 {
	public static void main(String[] args) {
		System.out.println("1.执行下列语句,变量i的值是:");
		System.out.println("byte i = 127;");
		System.out.println("i =i+ 2;");
		System.out.println("A 0\t\tB 编译不能通过");
		System.out.println("C 运行时抛出异常\tD -127");
		
		Scanner input = new Scanner(System.in);
		System.out.print("请输入您的答案: ");
		String choice = input.next();
		
		switch (choice) {
		case "A":
			System.out.println("对不起!回答错误");
			break;
		case "B":
			System.out.println("正确显示 恭喜您!回答正确");
			break;
		case "C":
			System.out.println("对不起!回答错误");
			break;
		case "D":
			System.out.println("对不起!回答错误");
			break;
		default:
			System.out.println("您输入的选项有误");
			break;
		}
		
	}
}

扩展:随机数的生成

package com.sxt.randomdemo;

/*
 * 随机数的生成
 */
public class RandomDemo01 {
	public static void main(String[] args) {
		for (int i = 0; i < 1000; i++) {
			// 生成[0,1)的随机小数
			// double num = Math.random();
			// 生成[0,10)的随机小数
			// double num = Math.random() * 10;
			
			int num = (int) (Math.random() * 10);
			System.out.println(num);
		}
		
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值