JAVA键盘录入 分支结构if swtich语句+循环结构for while语句 练习
今天学习的三个点,键盘录入 分支结构和循环结构。感觉这些还是得通过实操大量题目后才便于理解,前期只听教师讲解和死背公式的话,运用时还是很懵懂的 Day03
键盘录入
在程序执行过程中,可以让用户输入些数据,把这些数据储存到变量中,之后根据需要可以把这些数据进行运算。
录入步骤
导包 在类上方申明语句import java.util.Scanner;
创建录入对象 Scanner sc = new Scanner(System.in);
获取录入的数据int num = sc.nextInt();
举例
用户录入两个整数,求出两个整数的和
package Lianxi;import java.util.Scanner;//导包public class Lianxi1 {public static void main(String[] args) {Scanner sca = new Scanner(System.in);//创建键盘录入对象System.out.print("输入第一个数字:");//输入提示int num1 = sca.nextInt();//调用nextInt()方法 接受用户录入的数据System.out.print("输入第二个数字:");int num2 = sca.nextInt();int res = num1+num2;//把录入数据进行计算System.out.print("两数的和为:"+res);}}
分支结构
程序在执行时可能面对不同的情况作出不同的准备,每一种情况都是一个分支,程序需要根据判断来选择运行哪一个分支。
实现分支结构的格式
if语句
if语句 有三种表达式 特点是:代码多,执行少
格式一
if(布尔类型的表达式){
语句体();
}
布尔类型的表达式:指的是判断符合哪个条件,必须是boolean类型的数据。
语句体:表达的是选择执行某个情况.
执行流程:
计算布尔表达式的值,true或者false
如果为true,就执行语句体
如果为false,就不执行语句体
格式二
if(布尔条件表达式){
语句体1
}else{
语句体2
}
执行流程:
计算布尔表达式的值,true或者false
如果为true,执行语句体1
如果为false,执行语句体2
格式三
if(条件表达式1){
语句体1
}else if(条件表达式2){
语句体2
}else if(条件表达式3){
语句体3
}…else{
语句n
}
执行流程:
如果if后的条件表达式1的结果为true,那就执行语句体1结束分支
如不满足就去判断之后的条件表达式2,如为true就执行语句体2 结束分支
为false就判断条件表达式3,以此类推。。。。
如果条件表达式都不满足就执行最后else的内容
举例
录入一个整数,如果是偶数就输出num是偶数,否则输出num是奇数
package Chating;import java.util.Scanner;public class Ex {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.print("请录入一个整数:");int num = sc.nextInt();if(num % 2 == 0) {//通过被2取余来判断是否为偶数System.out.println(num + "是偶数");}else {System.out.println(num + "是奇数");}} }
switch语句
格式
switch(表达式){
case 常量1 :
语句1;
break;
case 常量2:
语句2;
break;
…
default:
语句n;
break;
}
执行流程
先获取switch后括号内表达式的值
把值与下面的常量1进行匹配,如果相同就执行语句1,执行完break跳出
如果不相同就与常量2进行匹配,相同就执行语句2再break跳出,反之则再往下匹配以此类推。
如果和任意的常量值都不匹配,则执行default下的内容,最后break跳出。
注意:
Case后只能+常量值 且不能重复
Default可以放在任意位置,也可以选择不写,不写则可能任意情况都不执行
如果多个case的表达式的处理方法是一样 的,则可省略break,只写最后的一个break,这样可以节省代码量
举例
输入的一个月份,输出当月的天数
package Chating;import java.util.Scanner;public class Ex {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.print("请输入年份:");int y = sc.nextInt();System.out.print("请输入月份:");int m = sc.nextInt();switch (m) {case 1:case 3:case 5:case 7:case 8:case 10:case 12:System.out.println(y+"年"+m+"月有31天");break;case 4:case 6:case 9:case 11:System.out.println(y+"年"+m+"月有30天");break;case 2 :System.out.println(y+"年"+m+"月有29天");break;default:System.out.println("没有这个月份,请重新输入");break;}} }
循环结构
对某些需要重复执行的相似语句,通过某种固定形式执行以此实现代码的简化
循环语句有三种:
for语句
while语句
do…while语句(不常用)
for语句
格式
for(初始化语句; 循环的条件表达式;初始化变量的改变){
循环体语句;
}
初始化语句:声明初始变量用来记录循环的次数
循环的表达式:布尔类型的表达式 表示循环执行的条件
初始化变量的改变:将初始化的变量进行变化,一般向着终止循环的方向变化
循环体语句:要重复执行的语句
**执行流程 **
初始化变量—判断循环的条件表达式, false就结束for循环
true就执行循环体语句 执行初始变量值的变化 再回到第二步重复上面的操作
举例
打印1到100之内的整数,但数字中包含9的要跳过,每行输出10个满足条件的数,之间用换行
package Chating;import java.util.Scanner;public class Ex {public static void main(String[] args) {int c=0;//计数器for (int i = 1; i <= 100; i++) {//从1开始,每次循环打印1+=1,直到等于100if (i%10!=9 && i/10%10!=9) {//同时满足 个位取余10不为9 和 十位取余10不为9 就打印System.out.print(i+" ");c++;//每打印一个数 计数器就累加+1if (c%10==0) {//当计数器为10或者10的倍数System.out.print("\n");//打印换行}}}} }
while语句
格式
while(循环条件表达式){
循环体语句;
初始化变量的改变;
}
执行流程
判断条件表达式 是false就终止循环
是true就执行循环体结构 初始化变量的改变 回到第二步
注意
注意初始化变量的自增,避免陷入死循环
举例
求出1-100之间所有偶数的和
package Chating;import java.util.Scanner;public class Ex {public static void main(String[] args) {int num =1;//初始化1int res =0;//初始化总和为0while (num<=100) {//当num小于等于100时执行循环if (num%2==0) {//通过取余判断是否是偶数res+=num;//是偶数则加入总和}num++;//每次循环计算好就累加}System.out.println("1-100之间所有偶数的和为"+res);}}
死循环
无限循环,循环永远都不会停止
一般出现于程序漏洞或者可以制造
格式
for(;😉{
循环体语句;
}
或
while(true){
循环体语句;
}
死循环的作用:
在格式上使用了死循环,但是在循环体中,可能出现需要结束循环的情况,准备了一些跳出、终止循环的跳转语句