04 键盘录入及选择结构

04

一、键盘录入(输入)

Java语言中,输入与输出相比是极其复杂的。

首先假设要获取两个整数的最大值,这两个整数不是程序内部定义的变量,而是通过键盘输入给计算机。

  • 首先导入Scanner的类包
  • 创建Scanner对象并传入System.in
    • System.out代表标准输出流,而System.in代表标准输入流
Scanner scanner = new Scanner(System.in);
  • 通过nextInt()方法接受键盘录入的整数值(此方法只接受键盘录入的整数值)
    • 要读取用户输入的字符串,使用scanner.nextLine(),要读取用户输入的整数,使用scanner.nextInt()
    • 用于接收键盘录入的String类型的数据:scanner.next()
    • nextLine()nextInt()下面使用的时候,会将换行符当做字符串进行接收,从而使得少输入一个字符序列所以建议使用next()方法替换掉nextLine()
int a = sc.nextInt();
  • 将数据存储到变量中
  • 比较大小

补:

正则表达式:相当于一个模板过滤器,符合这个模板的通过,不符合的自动清出

import java.util.Scanner;

public class Demo1{
	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		System.out.println("请输入第一位数:");
		int a = sc.nextInt();
		
		System.out.println("请输入第二位数:");
		int b = sc.nextInt();
		
		System.out.println("请输入第三位数:");
		int c = sc.nextInt();
		
		int amax = a>b?a:b;
		int max=amax>c?amax:c;
		System.out.println("最大值为:"+max);
		
	}

}

二、流程控制结构

1.顺序结构
  • 代码从上往下依次执行
2.选择结构
  • 也叫分支结构,选择结构会根据执行的结果而选择不同的代码执行
if语句
第一种形式
  • 格式:
if(关系表达式|boolean){
             语句体;
             }
  • 执行流程:

  • 首先判断关系表达式结果是true还是false

  • 如果是true,执行语句体

  • 如果是false,跳过语句体,执行下一步

public class Demo2 {

	public static void main(String[] args) {
		int a = 30;
		int b = 50;
		int max = a;
		
		if(a<b) {
			max = b;
		}
		
		System.out.println("最大值为:"+max);

	}

}

注意:

if语句中的大括号是可以省略的,省略之后 ,只能限定离其最近的那一条语句,故不建议省略

public class Demo3 {
	public static void main(String[] args) {
		int a = 5;
		int b = 10;

		if (a > b) 
			System.out.println("你好");
	    System.out.println("哈哈");
	    System.out.println("嘿嘿");
	    System.out.println("呵呵");
	}
}

第二种形式
  • 格式
if(关系表达式){
 			执行语句1;
 		}else{
 			执行语句2;
  		}
  • 执行流程
    • 首先判断关系表达式看其结果是true还是false
    • 如果是true就执行语句体1
    • 如果是false就执行语句体2
public class Demo4 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		System.out.println("请输入一个整数");
		int num = sc.nextInt();

		if (num % 2 == 0) {
			System.out.println("偶数");
		} else {
			System.out.println("奇数");
		}

	}
}

总结:两条执行语句,必须会有一条执行

注意:

如果else后面没有小括号,意味着执行else这个代码块,不需要任何的判断

第三种形式
  • 格式
if(关系表达式1){
 		执行语句1;
   }else if(关系表达式2){
  		执行语句2;
   }....else if(关系表达式n){
 		执行语句n;
   }else{
  		执行语句n+1;
   }
  • 执行流程

    • 首先判断关系表达式1,看其结果是true还是false
    • 如果是true,执行语句体1
    • 如果是false就继续判断关系表达式2,看其结果是true还是false
    • 如果是true,执行语句体2
    • 如果是false就继续判断关系表达式…,看其结果是true还是false
    • 如果没有任何表达式为true,就执行语句体n+1

    总结:不管是if,还是else if,还是else;所有的执行语句里面,只能有一条执行成功

public class Demo5 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		Scanner scanner = new Scanner(System.in);
		
		System.out.println("请输入一个月份:");
		int month = scanner.nextInt();
		
		if (month<1 || month>12) {
			System.out.println("捣乱的拖出去斩了");
		}else if(month>=3 && month<=5){
			System.out.println("春天");
		}else if(month>=6 && month<=8){
			System.out.println("夏天");
		}else if(month>=9 && month<=11){
			System.out.println("秋天");
		}else {
			System.out.println("冬天");
		}
		

	}

}

补:

if…else语句和三目运算符之间的相互转换

  • 凡是三目运算符能表示的 ,if…else语句必定可以实现;但是if…else可以实现的,三目运算符未必可以实现
public class Demo6 {
	public static void main(String[] args) {
		int a = 10;
		int b = 20;
		
		int max1 = a > b ? a : b;
		System.out.println(max1);
		
		int max2 = 0;
		if (a > b) {
			max2 = a;
		}else {
			max2 = b;
		}
		System.out.println(max2);
    }
}	
switch语句
  • 格式
switch (key) {
		case value1:
			语句1;
			break;
		case value2:
			语句2;
			break;
		case value3:
			语句3;
			break;	
		....
		default:
			语句n;
			break;
}
  • 执行流程
    • 首先计算出表达式的值
    • 其次,和case依次比较,一旦有对应的值,就会执行相应的语句;在执行的过程中,遇到break就会结
    • 最后,如果所有的case都和表达式的值不匹配,就会执行default语句体n,然后结束
  • 表达式的类型
    • byte,short,int,char,枚举 JDK7: String,menu
  • 注意事项
    • value是一个常量值或者生成常量值的表达式
    • case中的value值不能重复
    • case的顺序没有要求,可以放到任意位置
    • default不一定非要放在最后,java语言中习惯将其放在最后
    • default可以省略
    • break也可以省略,但是不建议省略。如果省略的话,代码会继续向下执行,不管下面的case是否匹配成功,一直执行到再次遇到break,或者是执行到了switch语句结束
    • switch语句遇到break或者代码执行到switch语句的最后会结束
import java.util.Scanner;

public class Demo7 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner = new Scanner(System.in);

		System.out.println("请输入成绩:");
        int num1 = scanner.nextInt();
        int num2 = num1 / 10;
        
        if (num1>100 || num1<0) {
			System.out.println("成绩出错");
        	return;
		}
        
		switch (num2) {
		case 10:
		case 9:
			System.out.println("该成绩为A");
			break;
		case 8:
			System.out.println("该成绩为B");
			break;
		case 7:
			System.out.println("该成绩为C");
			break;
		case 6:
			System.out.println("该成绩为D");
			break;
		default:
			System.out.println("该成绩为E,建议补考");
			break;
		}

	}

}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值