韩顺平Java入门第十天
1.swith分支结构
基本语法
流程图
快速入门
//请编写一个程序,该程序可以接收一个字符,
//比如:a,b,c,d,e,f,g a 表示星期一,b 表示星期二 …
import java.util.Scanner; public class Switch01 {
//编写一个 main 方法
public static void main(String[] args) {
/*案例:Switch01.java 请编写一个程序,该程序可以接收一个字符,
比如:a,b,c,d,e,f,g a 表示星期一,b 表示星期二 …
根据用户的输入显示相应的信息.要求使用 switch 语句完成
思路分析 1. 接收一个字符 , 创建 Scanner 对象
2. 使用 switch 来完成匹配,并输出对应信息
代码*/
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入一个字符(a-g)");
char c1 = myScanner.next().charAt(0);
//
//在 java 中,只要是有值返回,就是一个表达式
switch(c1) {
case 'a' :
System.out.println("今天星期一,猴子穿新衣");
break;
case 'b' :
System.out.println("今天星期二,猴子当小二");
break;
case 'c' :
System.out.println("今天星期三,猴子爬雪山..");
break;
//.....
default:
System.out.println("你输入的字符不正确,没有匹配的");
}
System.out.println("退出了 switch ,继续执行程序");
}
}
细节讨论
课堂练习题:
//1) 使用 switch 把小写类型的 char 型转为大写(键盘输入)。只转换 a, b, c, d, e. 其它的输出 "other"。
//2) 对学生成绩大于 60 分的,输出"合格"。低于 60 分的,输出"不合格"。
// (注:输入的成绩不能大于 100), 提示 成绩/60
//3) 根据用于指定月份,打印该月份所属的季节。
// 3,4,5 春季 6,7,8 夏季 9,10,11 秋季 12, 1, 2 冬季 [课堂练习, 提示 使 用穿透 ]
//
import java.util.Scanner;
public class SwitchExercise {
//编写一个 main 方法
public static void main(String[] args) {
//1)
Scanner myScanner = new Scanner(System.in);
System.out.println("请输入一个字符(a-e)");
char c1 = myScanner.next().charAt(0);
//
//在 java 中,只要是有值返回,就是一个表达式
switch(c1) {
case 'a' :
System.out.println("A");
break;
case 'b' :
System.out.println("B");
break;
case 'c' :
System.out.println("C");
break;
case 'd' :
System.out.println("D");
break;
case 'e' :
System.out.println("E");
break;
//.....
default:
System.out.println("other");
}
System.out.println("退出了 switch1 ,继续执行程序");
//2)
//对学生成绩大于 60 分的,输出"合格"。低于 60 分的,
//输出"不合格"。(注:输入的成绩不能大于 100), 提示 成绩/60
//思路分析 //1. 这道题,可以使用 分支来完成, 但是要求使用 switch
//2. 这里我们需要进行一个转换, 编程思路 :
// 如果成绩在 [60,100] , (int)(成绩/60) = 1
// 如果成绩在 [0,60) , (int)(成绩/60) = 0
//代码实现
System.out.println("请输入成绩");
double score = myScanner.nextDouble();
//使用 if-else 保证输入的成绩有有效的 0-100
//看了当老师的分析和代码演示后,自己一定要独立完成(不看老韩代码,也能写)
if( score >= 0 && score <= 100) {
switch ((int)(score / 60)) {
case 0 :
System.out.println("不合格");
break;
case 1 :
System.out.println("合格");
break;
//
default :
//
System.out.println("输入有误");
}
System.out.println("退出了 switch2 ,继续执行程序");
} else {
System.out.println("输入的成绩在 0-100");
}
//3)
System.out.println("请输入月份(1-12)");
int month = myScanner.nextInt();
switch(month) {
case 3 :
case 4 :
case 5 :
System.out.println(month + "月份是春季");
break;
case 6 :
case 7:
case 8:
System.out.println(month + "月份是夏季");
break;
case 9:
case 10:
case 11:
System.out.println(month + "月份是秋季");
break;
case 12:
case 1:
case 2:
System.out.println(month + "月份是冬季");
break;
default:
System.out.println("您输入的月份有误");
}
System.out.println("退出了 switch3 ,继续执行程序");
}
}
2.switch 和 if 的比较
1) 如果判断的具体数值不多,而且符合 byte、 short 、int、 char, enum[枚举], String 这 6 种类型。虽然两个语句都可 以使用,建议使用 swtich 语句。
2) 其他情况:对区间判断,对结果为 boolean 类型判断,使用 if,if 的使用范围更广。
3.for 循环控制(!!!)
基本介绍:听其名而知其意,就是让你的代码可以循环的执行。
基本语法:
老韩说明:
1). for 关键字,表示循环控制 。
2). for 有四要素:
(1)循环变量初始化
(2)循环条件
(3)循环操作
(4)循环变量迭代
3). 循环操作 , 这里可以有多条语句,也就是我们要循环执行的代码 。
4). 如果 循环操作(语句) 只有一条语句,可以省略 {}, 建议不要省。
for 循环执行流程分析:
注意事项和细节说明:
1) 循环条件是返回一个布尔值的表达式.
2) for(;循环判断条件;) 中的初始化和变量迭代可以写到其它地方,但是两边的分号不能省略。
3) 循环初始值可以有多条初始化语句,但要求类型一样,并且中间用逗号隔开,循环变量迭代也可以有多条变量迭代语句,中间用逗号隔开。
For应用练习:
public class ForExercise {
//编写一个 main 方法
public static void main(String[] args) {
//打印 1~100 之间所有是 9 的倍数的整数,统计个数 及 总和.
//[化繁为简,先死后活]
//老韩的两个编程思想(技巧)
//1. 化繁为简 : 即将复杂的需求,拆解成简单的需求,逐步完成 编程 = 思想 --练习-> 代码
//2. 先死后活 : 先考虑固定的值,然后转成可以灵活变化的值
//
//
//思路分析
//打印 1~100 之间所有是 9 的倍数的整数,统计个数 及 总和
//化繁为简
//(1) 完成 输出 1-100 的值
//(2) 在输出的过程中,进行过滤,只输出 9 的倍数 i % 9 ==0
//(3) 统计个数 定义一个变量 int count = 0; 当 条件满足时 count++;
//(4) 总和 , 定义一个变量 int sum = 0; 当条件满足时累积 sum += i;
//先死后活
//(1) 为了适应更好的需求,把范围的开始的值和结束的值,做出变量
//(2) 还可以更进一步 9 倍数也做成变量 int t = 9;
int count = 0;
int sum = 0;
for (int i = 1;i <= 100 ; ) {
if (i % 9 == 0) {
System.out.println(i + "可以被9整除");
count++;
sum += i;
}
i++;
}
System.out.println( "9的倍数有"+ count + "个");
System.out.println("总和是" + sum);
int j = 0;
int k = 5;
for (; k > 0; ) {
System.out.println(j + "+" + k + "=" + (j + k) );
j++;
k--;
//老师的解法:
// int n = 5;
// for( int i = 0; i <= n; i++) {
// System.out.println(i + "+" + (n-i) + "=" + n);
// }
}
}
}
4.while 循环控制
基本语法:
while 循环执行流程分析:
注意事项和细节说明:
1) 循环条件是返回一个布尔值的表达式 。
2) while 循环是先判断再执行语句。
//打印 40—200 之间所有的偶数
//
public class WhileExercise{
public static void main(String[] args){
//化繁为简
//
//先死后活
int start = 40;
int end = 200;
int i = start;
while (i <= 200) {
if (i % 2 == 0) {
System.out.println(i + "是" + start + "到" + end + "之间的偶数");
}
i++;
}
}
}
5.do-while 循环控制
基本语法:
循环变量初始化;
do{
循环体(语句);
循环变量迭代;
}while(循环条件);
老韩说明:
1). do while 是关键字。
2).也有循环四要素, 只是位置不一样。
3). 先执行,再判断,也就是说,一定会至少执行一次 。
4). 最后有一个 分号 ; 。
5). while 和 do…while 区别举例: 要账。
do…while 循环执行流程分析:
注意事项和细节说明
1) 循环条件是返回一个布尔值的表达式。
2) do…while 循环是先执行,再判断, 因此它至少执行一次。
课堂练习题
//
//1) 打印 1—100
//2) 计算 1—100 的和
//3) 统计 1---200 之间能被 5 整除但不能被 3 整除的个数
//
public class DoWhileExercise01{
public static void main(String[] args){
//化繁为简
//先死后活
//1)打印 1—100
int i = 1;
do{
System.out.println(i);
i++;
}while (i <= 100);
//2)计算 1—100 的和
int j = 1;
int sum = 0;
do{
sum += i;
j++;
}while (j <= 100);
System.out.println("1到100的和是" + sum);
//3)统计 1---200 之间能被 5 整除但不能被 3 整除的个数
int count = 0;
int k = 1;
do{
if (k % 5 == 0 && k % 3 != 0) {
count++;
}
k++;
}while (k <= 200);
System.out.println("1到200之间能被5整除但不能被3整除的个数是" + count);
}
}
4) 如果李三不还钱,则老韩将一直使出五连鞭,直到李三说还钱为止
import java.util.Scanner;
public class DoWhileExercise02 {
//编写一个 main 方法
public static void main(String[] args) {
//如果李三不还钱,则老韩将一直使出五连鞭,直到李三说还钱为
//[System.out.println("老韩问:还钱吗?y/n")] do...while ..
//化繁为简
//(1) 不停的问还钱吗?
//(2) 使用 char answer 接收回答, 定义一个 Scanner 对象
//(3) 在 do-while 的 while 判断如果是 y 就不在循环
//一定自己动脑筋..
Scanner myScanner = new Scanner(System.in);
char answer = ' ';
do {
System.out.println("老韩使出五连鞭~");
System.out.println("老韩问:还钱吗?y/n");
answer = myScanner.next().charAt(0);//接收他的回答
System.out.println("他的回答是" + answer);
}while(answer != 'y');//判断条件很关键
System.out.println("李三还钱了");
}
}
------文章为自学笔记,学习的课程是B站上的韩顺平30天学JAVA,文章标题的天数是自己学习的天数-----