Java学习_day03_(02 键盘录入数据、流程控制语句之选择结构语句if、switch语句)

一.键盘录入数据

开发步骤:
1)导包
2)创建文本扫描器对象
3)提示并录入数据(“回车”,录入)
4)接收并使用数据 (根据 具体的需求)

Scanner类: JDK5以后提供的:录入数据的 (无法直接录入char)
录入字符串: String nextLine() /String next();
录入int类型数据:int nextInt()
录入的类型一定和接收的类型匹配:否则报错: java.util.InputMismatchException

//需求:
录入学生姓名,语文成绩,数学成绩,分数排序! (排序算法+面向对象的基础)
语文/数学—都是int类型:为了方便统一,都是使用String
姓名:String
语文/数学:String-- Integer(int类型包装类型) —>int

*/
import java.util.Scanner;
class Test{

	public static void main(String[] args){
		
		//创建文本扫描器
		Scanner sc = new Scanner(System.in) ;
		//录入两个int类型:没有问题  
		
		/*
		System.out.println("请输入第一个数据:") ;
		int a = sc.nextInt() ;
		
		System.out.println("请输入第二个数据:") ;
		int b = sc.nextInt() ;
		
		
		*/
		
		
	
		//录入两个字符串 :String nextLine()   :都可以接收到
		/*
		System.out.println("请输入第一个数据:") ;
		String a = sc.nextLine() ;
		
		System.out.println("请输入第二个数据:") ;
		String b = sc.nextLine() ;
		*/
		
		
		
		//先录入String,在录入int (没有问题:都可以接收到)
		/*
		System.out.println("请输入第一个数据:") ;
		String a = sc.nextLine() ;
		
		System.out.println("请输入第二个数据:") ;
		int b = sc.nextInt() ;
		
		
		
		
		*/
		
		
		//先录入int,在录入字符串 (有问题)
		//原因: "回车"符号---->"字符" :当前录入完int类型,
		//下一个String "回车本身字符串",直接将第二个值漏掉
			
		//解决方案1:在录入String类型之前,在创建一个扫描器对象
		System.out.println("请输入第一个数据:") ;
		int a = sc.nextInt() ;
		
		//在录入String类型之前,在创建一个扫描器对象
		Scanner sc2 = new Scanner(System.in) ;
		
		System.out.println("请输入第二个数据:") ;
		String b = sc2.nextLine() ;  //"较为正式的用法:nextLine()"//String--->底层由"字符"组成的
		//方式2:
		//public String next(): 自己使用的可以 next方法, 开发中:nextLine()
		
		String b = sc2.nextLine() ;
		
		System.out.println("a:"+a+",b:"+b) ;	
	}
}

二.流程控制语句-顺序结构语句

顺序结构语句(最基本的语句)
当前xxx.java文件—jvm 编译 -----> 类名.class(字节码文件)
执行程序: java 类名.class; (编译+运行: 底层原理是一种反射:Java高级部分)
后期:反射贯彻于JavaEE
jvm调用main方法:代码从上而下依次加载(源顺序)

class Demo{
	
	public static void main(String[] args){
		System.out.println("程序开始了...") ;
		
		
		int a = 10  ;
		System.out.println("a的结果是:"+a ) ;
		myTest() ; //自定义方法
		
		
		System.out.println("程序结束了...") ;
		
		
	}
	public static void myTest(){
		System.out.println("执行了myTest方法...") ;
	}
}

三.流程控制语句-选择结构语句

选择结构语句:if语句和switch语句
if语句:三种格式
第一种格式
应用场景:针对单个条件进行判断
格式:

if(表达式){
				语句;
			}

执行流程:
首先判断表达式是否成立,如果成立,则执行语句;否则不成立,不会执行!

注意事项:
1)if的后面不能有;( 分号),if(表达式);{} 错误语法
有左大括号的地方不能有分号;有分号的地方不能有左大括号
2)如果使用if格式1,里面的语句是条语句,{}是可以省略的!,不建议省略!

使用场景:用户输入验证码,需要和服务端的验证码对比,验证码匹配才能登录

//导包

import java.util.Scanner ;
class IfDemo1{
	public static void main(String[] args){
		//文本扫描器对象
		Scanner sc = new Scanner(System.in) ;
		
		//提示并录入
		System.out.println("请您录入一个x的值:") ;
		int x = sc.nextInt() ;
		
		//if语句格式1
		
		/*if(x >= 10){
			System.out.println("x大于等于10") ;
		}
		*/
		//if语句没有意义
		
		if(x >= 10);
		//局部代码块 :在方法定义中定义{}:作用:限定变量的生命周期
		{	
			int a = 10 ;
			System.out.println("x大于等于10") ;
			System.out.println(a) ;
		}
		
		//System.out.println(a) ;//java:54: 错误: 找不到符号
		if(x>=5)
			System.out.println("x大于等于5") ;
		
		
		
		System.out.println("over") ;
	}
}

第二种格式:

	if(表达式){
		语句1;
	}else{
		语句2;
	}

执行流程:
首先判断表达式是否成立,
如果成立,执行语句1;
否则,执行语句2

应用场景:针对两种情况进行判断

应用场景:
键盘录入一个字符串 username 以及密码 password
使用这个用户名以及密码和已知存在用户名和密码进行匹配,
如果一致,提示"用户登录成功",否则"登录失败!"

练习:
判断输入的用户名和密码是否匹配


import java.util.Scanner ;
class IfDemo2{
	
	public static void main(String[] args){
		
		
		//已经存在用户名和密码
		String name = "admin" ;
		String pwd  = "admin" ;
		System.out.println("---------------欢迎访问xxx系统---------------------") ;
	
	
		//创建键盘录入对象
		Scanner sc = new Scanner(System.in) ;
		
		//提供并录入数据
		System.out.println("请输入用户名:") ;
		String username = sc.nextLine() ;
		
		System.out.println("请输入密码:") ;
		String password = sc.nextLine() ;
		
		//判断:if...else...
		if(name.equals(username) && pwd.equals(password)){
			System.out.println("登录成功...") ;
		}else{
			System.out.println("对不起,登录失败!...") ;
		}
	


	/*
	while(true){
		//创建键盘录入对象
		Scanner sc = new Scanner(System.in) ;
		
		//提供并录入数据
		System.out.println("请输入用户名:") ;
		String username = sc.nextLine() ;
		
		System.out.println("请输入密码:") ;
		String password = sc.nextLine() ;
		
		//判断:if...else...
		if(name.equals(username) && pwd.equals(password)){
			System.out.println("登录成功...") ;
			break;
		}else{
			System.out.println("对不起,登录失败,重新输入!") ;
		}
	}
	*/		
	}
}

第三种格式:
场景:针对多个情况进行判断
格式

		if(表达式1){
			语句1;
		}else if(表达式2){
			语句2;
		}else if(表达式3){
			语句3;
		...
		}else{
			语句n+1 ;
		}

流程:
首先,判断表达式1是否成立,成立,执行语句1
否则,判断表达式2是否成立,成立,执行语句2
否则,判断表达式3是否成立,成立,执行语句3


如果上述都没有匹配的结果:执行else的语句;

练习:
1.键盘录入三个数据,求三个数据中的最大值,使用if语句格式嵌套完成和三元分别完成

(1)
import java.util.Scanner;                    //导入Scanner扫描文本的包
class Traning{                                //创建一个Traning的类
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);  //建立一个新的文本扫描对象sc
		System.out.println("请输入第一个数据");
		int num1 = sc.nextInt();		      // 键盘录入数字1										
		System.out.println("请输入第二个数据");
		int num2 = sc.nextInt();		     // 键盘录入数字2
		System.out.println("请输入第三个数据");
		int num3 = sc.nextInt();		     // 键盘录入数字3
		if(num1>num2){						//比较num1和num2之间的最大值,然后跟num3比较
			if(num1>num3){
				System.out.println("三个数字最大值为"+num1);
			}
			else{
				System.out.println("三个数字最大值为"+num3);
			}
		}
		else{	
			if(num2>num3){					//比较num2和num3之间的最大值,得出最大值
				System.out.println("三个数字最大值为"+num2);
			}
			else{
				System.out.println("三个数字最大值为"+num3);
			}
		}
			
	}
}

(2)
import java.util.Scanner;                    //导入Scanner扫描文本的包
class Traning{                                //创建一个Traning的类
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);  //建立一个新的文本扫描对象sc
		System.out.println("请输入第一个数据");
		int num1 = sc.nextInt();		      // 键盘录入数字1										
		System.out.println("请输入第二个数据");
		int num2 = sc.nextInt();		     // 键盘录入数字2
		System.out.println("请输入第三个数据");
		int num3 = sc.nextInt();		 		// 键盘录入数字3	
		
		int a = (num1>num2)?num1:num2;			//将num1和num2之间的较大值赋值给变量a
		int b = (a>num3)?a:num3;				//将a与num3之间的较大值赋值给变量b
		System.out.println("三个值的最大值是"+b);
	}
}

2.键盘录入两个数据,比较两个数据是否相等(if语句)

import java.util.Scanner;                    //导入Scanner扫描文本的包
class Traning{                                //创建一个Traning的类
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);  //建立一个新的文本扫描对象sc
		System.out.println("请输入第一个数据");
		int num1 = sc.nextInt();		      // 键盘录入数字1										
		System.out.println("请输入第二个数据");
		int num2 = sc.nextInt();		     // 键盘录入数字2
		if (num1==num2){
			System.out.println("两个数据相等");
		}
		else{
			System.out.println("两个数据不相等");
		}
	}
}

3.键盘录入一个数据,判断这个数据是否是偶数(if语句完成!)

import java.util.Scanner;                    //导入Scanner扫描文本的包
class Traning{                                //创建一个Traning的类
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);  //建立一个新的文本扫描对象sc
		System.out.println("请输入一个数据");
		int num1 = sc.nextInt();		      // 键盘录入数字1										
		if (num1%2==0){
			System.out.println("这个数是偶数");
		}
		else{
			System.out.println("这个数不是偶数");
		}
	}
}

4.需求:键盘录入一个月份的值:判断季节
3,4,5 春季
6,7,8 夏季
9,10,11 秋季
12,1,2 冬季

import java.util.Scanner ;
class ifDemo3{
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in) ;
		
		//录入数据
		System.out.println("请您输入学生的成绩:") ;
		int socre = sc.nextInt() ;
				
		if(socre >100 || socre <0){
			System.out.println("对不起,数据不合法!") ;
		}else if(socre >= 90 && socre<=100){
			System.out.println("优秀") ;
		}else if(socre >= 80 && socre<90){
			System.out.println("较好") ;
		}else if(socre >=70 && socre <80){
			System.out.println("良好") ;
		}else if(socre >=60 && socre<70){
			System.out.println("及格") ;
		}else{
			System.out.println("不及格") ;
		}
		
	}
}

switch语句

格式:

		switch(表达式){
		case1:
			语句1;
			break ;
		case2:
			语句2;
			break;
	...
		default:
			语句n+1;
			break ;
		}

switch(表达式):最基本的类型:int,byte,char,
jdk5以后:可以跟枚举类(enum)
jdk7以后:String类型
case:后面必须接常量,例如:整数 1

执行流程:
首先表达式接收一个值
然后和case语句 值1比较,如果成立,执行语句1,break 结束switch
值1不匹配,判断和值2是否匹配,如果匹配成功,执行语句2,结束switch

上面case 语句都不成立,
执行default语句,执行语句n+1,结束switch!

switch语句的注意事项
1)case语句的后面只能是常量 (Java是一个强类型语言)
前端:javascript :switch语句的case后面可以常量也可以变量

2)break语句:不要轻易省略掉, 会造成case 穿透现象(此时,如果跟某个case已经匹配,但是没有语句break,下面的case就不会对比,直接执行语句)
break:结束,中断 :结束switch

3)switch语句的结束条件
a)语句break结束
b)程序默认执行的到末尾!

4)default语句可以在switch语句中的任何位置,不影响执行流程!
当前case后面的都匹配,执行default语句
如果default语句在语句中的话,break语句 不能省略!
如果default语句在switch末尾的话,break语句是可以省略!

需求:
1.键盘录入一个数据,判断星期
1 星期一
2 星期二
3 星期三
4 星期四
5 星期五
6 星期六
7 星期日

import java.util.Scanner;
class SwitchDemo{
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in) ;
		
		//提示并录入数据
		System.out.println("请您输入一个数据(1-7):");
		int week = sc.nextInt() ;
		/*
		switch(表达式){
		case 值1:
			语句1;
			break ;
		case 值2:
			语句2;
			break;
		...

		default:
			语句n+1;
			break ;
		}
		*/
		switch(week){
		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 ;
		
		default:
			System.out.println("对不起,没有该星期") ;
			break ;
			
		}
	}
}

2.看程序,写结果

class Test{
	public static void main(String[] args){
		
		int a = 3 ;
		int b = 4 ;
		
		switch(a){
		default:
			b++ ;	//1) b++  5
		case 4:
			b++ ;	//2) b++  6
		case 5:
            b ++ ; //3)b++ 		7 
		}
		
		
		//b的值是多少
		System.out.println(b) ;
		System.out.println("---------------------------") ;
		
		
		int x = 3 ;
		int y = 4 ;
		
		switch(x){
		default:
			y++ ;
			break ;
		case 3:
			y++ ;   	//y++ 5 
		case 4:
            y ++ ;		//y++ 6
		}
		//y的值是多少
		System.out.println(y) ;
	}
}

3.将键盘录入一个月份,判断季节 (利用case穿透)
3,4,5 春季
6,7,8 夏季
9,10,11 秋季
12,1,2 冬季

import java.util.Scanner ;
class SwitchTest{
	public static void main(String[] args){
		//创建键盘录入对象
		Scanner sc = new Scanner(System.in) ;
		
		//提示并录入数据
		System.out.println("请输入一个数据(1-12):") ;
		int month = sc.nextInt() ;
		
		//使用switch来判断
		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 ;
			
		}
	}
}

4.模拟一个单项选择题

键盘录入一个数据,输出一个"正确答案 A B C D "
Scanner类:不能够录入char类型,间接去利用这个字符对应的ASCII码表的值 (int)
‘A’---- 65
‘B’---- 66
‘C’---- 67
‘D’---- 68

1)导包并创建文本扫描器对象
给出一些选项
<<我们结婚吧>>电视剧中的"杨桃"谁演的?
输出语句("65 ")

2)录入int类型
int choiceNumber = 文本扫描器对象.nextInt();
//将choinceNumber int类型强制转换为char类型
char choice = (char)choiceNumber ;

import java.util.Scanner ;
class SwitchTest2{
	public static void main(String[] args){
		//提供几个选项
		System.out.println("<<我们结婚吧>>电视剧中的 杨桃谁扮演的?") ;
		System.out.println("65 刘亦菲") ;
		System.out.println("66 高圆圆") ;
		System.out.println("67 张佳宁") ;
		System.out.println("68 朱茵") ;
		System.out.println("================进入选择======================") ;
		
		//创建键盘录入对象
		Scanner sc = new Scanner(System.in) ;
		
		//提示并录入数据
		System.out.println("请输入您的选项:") ;
		int choiceNumber = sc.nextInt() ;
		
		//强制类型转换
		char choice = (char)choiceNumber ;
		
		//switch语句来判断
		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 ;	
		}
		
	}
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值