1、键盘录入
2、分支结构
键盘录入
概述
1、键盘录入:在程序运行的过程中,可以让用户录入一些数据,存储在内存的变量中,在后续的程序运行过程中,可以使用这些数据。
2、步骤:
第一步:导包,在类声明的上面,import java.util.Scanner;
第二步:创建键盘录入对象,Scanner sc = new Scanner(System.in);
第三步:调用sc对象的nextInt方法,获取键盘录入的整数
int x = sc.nextInt();(next接着基本类型:如nextDouble()等)
第四步:使用x后续处理
代码示例
//导包
import java.util.Scanner;
class Demo_1 {
//键盘录入
public static void main(String[] args) {
// 创建键盘录入对象
Scanner sca_12 = new Scanner(System.in);
//调用对象中的nextInt() 方法
int a = sca_12.nextInt();
int b = sca_12.nextInt();
System.out.println(a*b);
}
}
练习1
键盘录入两个整数,计算两个整数的和
代码示例
练习2
键盘录入三个整数,输出三个整数的最大值
代码示例
import java.util.Scanner;
class Demo_2 {
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 abMax = a > b ? a : b;
// int max = abMax > c ? abMax : c;三目运算符的一种用法
int max = (a > b ? a : b) > c ? (a > b ? a : b) : c;
System.out.println("三个整数的最大值为:"+max);
}
}
练习3
键盘录入一个整数,判断该数字的奇偶
例如,输出:该数字是25,是一个奇数
代码示例
import java.util.Scanner;
class Demo_3 {
public static void main(String[] args) {
//键盘录入一个整数,判断该数字的奇偶
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个数字");
int a = sc.nextInt();
//String str = a % 2 == 1 ? "奇数" : "偶数" ;
String str = a % 2 == 0 ? "偶数" : "奇数" ;
System.out.println(a+"是"+str);
}
}
分支结构
流程控制
1、在一个程序中,有很多的代码,代码的执行顺序,就是流程。
2、用于控制代码流程的方式,就是流程控制 就是控制代码的执行顺序
3、流程控制的分类:
顺序结构:代码从上到下,从左到右依次执行(重点)
分支结构:到达某个状态时,可能会有多种情况,每种情况都需要提前准备好,所以多条路的路口就是一个分支。代码写得多,程序运行的少。(重点)
循环结构:某段代码相同或者相似,使用相同的逻辑。使用一定的格式,来完成相同代码的反复执行。代码写的少,程序运行次数多。(重点)
分支结构概述
1、到达某个状态时,可能会有多种情况,每种情况都需要提前准备好,所以多条路的路口就是一个分支。代码写得多,程序运行的少。
2、实现格式:
if语句:if是如果的意思,满足了这种条件,才能执行相应的代码,实现不同的逻辑
if
if...else
if...else if...else if....else
switch语句:根据某个变量的值,判断符合哪种执行条件
if语句的第一种格式
1、格式:
if (布尔表达式) {
语句体;
}
2、说明:
1、if语句后面跟着的小括号,里面必须是boolean类型的值;if语句后面的小括号中,只要是计算结果为boolean类型,就合法(合法不代表就有意义)
2、语句体,可以是任意操作
3、执行流程:
1、计算布尔表达式的值,要么为true、要么为false
2、如果计算结果为true,执行语句体
3、如果计算结果为false,就不执行语句体
说明只有布尔表达式结果为true才会执行判断语句{ }里面的代码
代码示例
import java.util.Scanner;
class Demo_5 {
public static void main(String[] args) {
//if语句的第一种格式
// if (布尔表达式){ 语句体; }
Scanner sc = new Scanner(System.in);
int aa = sc.nextInt();
if (aa> 10) {
System.out.println(4);
int a = 1;
a++;
System.out.println(a);
if(false){
System.out.println("我是里面的if语句");
}
}
System.out.println("if语句管不到我");
}
}
If语句的注意事项
1、if后面跟着的小括号里面,必须是boolean的值
2、if后面跟着的小括号里面,只要计算结果为boolean类型,就算合法
3、在小括号后面不要加分号,一般来说,有左大括号,就没有分号,有分号,就没有左大括号
4、语句体:可以是任意语句。如果语句体只有一句,那么大括号可以省略。但是建议所有情况都加上大括号,不要省略
代码示例
class Demo_6 {
public static void main(String[] args) {
//if语句的注意事项
if(true/*只能写true 或者false ,表达式的值的结果类型为boolean*/){
System.out.println(1);
}
boolean b = false;
if(b = true){
System.out.println(b);
}
if(b = false)/*;不能加分号*/{
System.out.println(";"+b);
}
//
System.out.println("---------");
if(b = true)
//if语句中如果只有一行代码,可以省略大括号,但是不建议大家省略
System.out.println(b);
System.out.println("if你能管到我吗");
}
}
if语句的第二种格式
1、格式:
if (条件表达式) {
语句体1;
} else {
语句体2;
}
2、说明:
1、是否有某种情况,可以语句体1和语句体2都不执行?不可能,else就已经包含了if不满足的所有状态
2、是否有某种情况,可以让语句体1和语句体2都执行?不可能,因为只要语句体1执行了,if语句就直接结束了
3、只能执行其中的一句,并且一定会执行其中一句
3、执行流程:
1、计算条件表达式的值,要么是true、要么是false
2、如果条件表达式的值为true,执行语句体1
3、如果条件表达式的值为false,执行语句体2
代码示例
import java.util.Scanner;
class Demo_7 {
public static void main(String[] args) {
//if语句的第二种格式
/*if(布尔表达式){
语句体1
}else {
语句体2
}*/
System.out.println("请输入你的年龄");
Scanner sc = new Scanner(System.in);
int age = sc.nextInt();
//先判断表达式的结果,如果为true执行语句体1
//如果为false执行语句体2
//思考:有没有可能语句体1和语句体2.都执行,或都不执行?
if(age >= 18){
//语句体1;
System.out.println("可以观看此电影");
}else{ //else 其他的,已经包含了不满足if判断的其他的所有情况
//语句体2;
System.out.println("未成年人禁止观看");
}
//if ....else至少要执行一个语句体
}
}
if语句的第三种格式
1、格式:
if (条件表达式1) {
语句体1;
} else if (条件表达式2) {
语句体2;
} else if (条件表达式3) {
语句体3;
}
...
} else if (条件表达式n) {
语句体n;
} else {
语句体n+1;
}
2、执行流程:
1、计算条件表达式1,如果为true,就执行语句体1,if语句结束
2、如果条件表达式1为false,计算条件表达式2,如果为true,就执行语句体2,if语句结束
3、如果条件表达式2位false,就计算条件表达式3.......
4、如果条件表达式1~条件表达式n全都为false,那么就执行语句体n+1
3、说明:
1、如果条件表达式2计算结果为true,执行语句体2(其实这个条件的完整版本:条件表达式1不满足,并且条件表达式2满足)
2、最后的else语句可以有也可以没有,如果有,就一定有执行的内容,如果没有就可能什么都执行不了
3、语句体1~语句体n+1是否有可能执行两句或者两句以上?不可能,只要其中一条语句执行了,if语句就结束了
4、语句体1~语句体n+1是否有可能一句都不执行?两种情况,如果没有else语句,就可能一个语句体都不执行;如果有else语句,就一定会执行其中的一句。
代码示例
import java.util.Scanner;
class Demo_8 {
public static void main(String[] args) {
//if语句的第三种格式
/*if(布尔表达式1){
语句体1;
}else if(布尔表达式2){
语句体2;
}else if(布尔表达式3){
语句体3;
}else if(布尔表达式4){
语句体4;
}.......
else if(布尔表达式n){
语句体n;
}else{
语句体n+1;
}*/
Scanner sc = new Scanner(System.in);
System.out.println("选择你心仪的战队");
int a = sc.nextInt();
if(a == 1){
System.out.println("I like RNG");
}else if(a == 2){
System.out.println("I like IG");
}else if(a == 3){
System.out.println("I like FPX");
}else if(a == 4){
System.out.println("I like SKT");
}else if(a == 5){
System.out.println("I like DWG");
}else{//不加else有可能一个语句体都不执行,加上后至少要执行一个语句体
System.out.println("垃圾游戏,我谁都不喜欢");
}
}
}
switch语句
1、switch:表示英文中的开关,每个条件都像一扇门,开着的,就可以执行,否则就到下一扇门判断。
2、格式:
switch (表达式) {
case 常量1:
语句体1;
break;
case 常量2:
语句体2;
break;
.........
case 常量n:
语句体n;
break;
default:
语句体n+1;
}
3、执行流程:
1、计算表达式的值,分别和各个常量匹配
2、如果和常量1匹配,那么久执行语句体1,break,switch语句就结束了
3、如果和常量1不匹配,那么就判断是否和常量2匹配,如果匹配就执行语句体2,break,switch语句就结束了
4、以此类推,如果常量1~常量n全都没有和表达式的值匹配,那么就执行default中的内容,switch语句结束。
代码示例
import java.util.Scanner;
class Demo_9 {
public static void main(String[] args) {
/*
switch (表达式) {
case 常量1:
语句体1;
break;
case 常量2:
语句体2;
break;
.........
case 常量n:
语句体n;
break;
default:
语句体n+1;
}
*/
Scanner sc = new Scanner(System.in);
System.out.println("请指定一个星期的数字");
int week = sc.nextInt();
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("星期日");
default ://可以有,也可以没有,和else功能类似
System.out.println("地球上没有你想要星期");
}
}
}
switch语句的注意事项
1、单词解释:
switch:开关;case:情况;break:破坏、退出;default:默认
2、表达式:
Jdk1.5之前:byte、short、char、int
Jdk1.5:枚举类型
Jdk7:String
3、case后面只能跟常量,不能跟变量
4、每个case的语句体后面,一定要跟上一个break语句,否则就无法结束switch语句,并且发生case穿透。Case穿透的利用:多个情况如果是相同的执行逻辑,那么就可以使用case穿透。
5、Default语句:可以写也可以不写。如果不写,就有可能一个语句都执行不到。建议把default语句加上。
6、Default语句可以写在任意位置,无论写在什么位置,都是最后去匹配,建议把default语句写在最后。
7、Switch语句结束的条件:碰到了break语句;碰到了右大括号
代码示例
import java.util.Scanner;
class Demo_10 {
public static void main(String[] args) {
//switch语句的注意事项
Scanner sc = new Scanner(System.in);
//System.out.println("请指定一个星期的数字");
//int week = sc.nextInt();
//char dou = 'c';
String dou = "ones";
switch( dou/*byte ,short ,char ,int ,String ,(枚举enum) */){
//case 1 :
//case 'a' :
default ://default语句可以放在任意的位置,无论放在那里都是最后去匹配的
System.out.println("地球上没有你想要星期");
//break;//default方法中间,break不要省,否则发生case穿透问题
case "one" : //case后面只能跟常量不能跟变量
System.out.println("星期一");
break;//break不能省,如果省掉就发生case穿透问题
//case 2 :
//case 'b' :
case "two" :
System.out.println("星期二");
break;
//case 3 :
//case 'c' :
case "three" :
System.out.println("星期三");
break;
//case 4 :
//case 'd' :
case "four" :
System.out.println("星期四");
break;
//case 5 :
//case 'e' :
case "five" :
System.out.println("星期五");
break;
//case 6 :
//case 'f' :
case "six" :
System.out.println("星期六");
break;
//case 7 :
//case 'g' :
case "seven" :
System.out.println("星期日");
}
}
}
// 3,4,5, 春天 ,6,7,8,夏天,9 , 10 ,11 秋天 12 ,1,2 冬天
If语句和switch语句的区别
1、相同点:if语句和switch语句都可以表达分支结构
2、不同点:
1、if语句格式相对灵活,更加强大,switch语句相对弱小。所有的switch语句都可以被if语句替代。
2、if语句更多的是做一些连续性的判断,而switch语句更多的是做一些离散性的匹配
3、if语句每次都需要获取表达式的值,而switch只获取一次表达式的值,所以相对switch的效率高一些。
代码示例
class Demo_12 {
public static void main(String[] args) {
//if语句和switch语句区别
//if语句连续性的判断
int i = 60;
if(i > 1 && i < 100){ // 1< i<100
System.out.println(i);
}
switch(j*j){//离散型的匹配
case 1:
case 2:
case 3:
}
if(j * j > 10){
}else if(j*j < 10){
}
}
}
练习
键盘录入一个学生的成绩,int类型的分数,根据录入的分数,输出分数等级
[90, 100],优秀 大于等于90小于等于100
[80,90),良好 大于等于80小于90
[60, 80),及格
[0, 60),不及格
使用两种方式完成:
1、使用if语句完成
2、使用switch语句完成
代码示例
import java.util.Scanner;
class Demo_13 {
public static void main(String[] args) {
/*
键盘录入一个学生的成绩,int类型的分数,根据录入的分数,输出分数等级
[90, 100],优秀 大于等于90小于等于100
[80,90),良好 大于等于80小于90
[60, 80),及格
[0, 60),不及格
*/
Scanner sc = new Scanner(System.in);
System.out.println("请输入学生的成绩");
int score = sc.nextInt();
switch(score / 10){
case 0 :
case 1 :
case 2 :
case 3 :
case 4 :
case 5 :
System.out.println("不及格");
break;
case 6 :
case 7 :
System.out.println("及格");
break;
case 8 :
System.out.println("良好");
break;
case 9 :
case 10 :
System.out.println("优秀");
break;
default:
System.out.println("你输入的成绩不合法");
}
/* if(score >= 90 && score <= 100){
System.out.println("优秀");
}else if(score >= 80 && score < 90){
System.out.println("良好");
}else if(score >=60 && score < 80){
System.out.println("及格");
}else if(score >=0 && score < 60){
System.out.println("不及格");
}else{
System.out.println("你输入的不是成绩吧");
}*/
}
}