今天学习的三个点,键盘录入 分支结构和循环结构。感觉这些还是得通过实操大量题目后才便于理解,前期只听教师讲解和死背公式的话,运用时还是很懵懂的 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(布尔类型的表达式){
语句体();
}
布尔类型的表达式:指的是判断符合哪个条件,必须是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(表达式){
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(初始化语句; 循环的条件表达式;初始化变量的改变){
循环体语句;
}
初始化语句:声明初始变量用来记录循环的次数
循环的表达式:布尔类型的表达式 表示循环执行的条件
初始化变量的改变:将初始化的变量进行变化,一般向着终止循环的方向变化
循环体语句:要重复执行的语句
**执行流程 **
初始化变量—判断循环的条件表达式, 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(循环条件表达式){
循环体语句;
初始化变量的改变;
}
执行流程
判断条件表达式 是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){
循环体语句;
}
在格式上使用了死循环,但是在循环体中,可能出现需要结束循环的情况,准备了一些跳出、终止循环的跳转语句