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,这样可以节省代码量
举例
输入2020年的一个月份,输出当月的天数
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,直到等于100
if (i%10!=9 && i/10%10!=9) {//同时满足 个位取余10不为9 和 十位取余10不为9 就打印
System.out.print(i+" ");
c++;//每打印一个数 计数器就累加+1
if (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;//初始化1
int res =0;//初始化总和为0
while (num<=100) {//当num小于等于100时执行循环
if (num%2==0) {//通过取余判断是否是偶数
res+=num;//是偶数则加入总和
}
num++;//每次循环计算好就累加
}
System.out.println("1-100之间所有偶数的和为"+res);
}
}
死循环
无限循环,循环永远都不会停止
一般出现于程序漏洞或者可以制造
格式
for(;😉{
循环体语句;
}
或
while(true){
循环体语句;
}
死循环的作用:
在格式上使用了死循环,但是在循环体中,可能出现需要结束循环的情况,准备了一些跳出、终止循环的跳转语句