-
学习日期: 12月 9 日
-
知识导图:
-
学习内容:
多分支结构
多分支结构特别说明:
1.多分支可以没有else ,如果所有的条件表达式都不成立,则一个执行入口都没有
2.如果有else,如果所有的条件表达式都不成立,则默认执行else代码块
嵌套分支:
在一个分支结构中又完整的嵌套了另一个完整的分支结构,里面的分支的结构称为内层分支外面的分支结构称为外层分支。老师建议: 不要超过 3 层 (可读性不好)
接收字符方法: char gender = scanner.next().charAt(0)
switch
switch流程控制
case后面的必须是常量或者是常量表达式
switch 和 if 的比较
1) 如果 判断的具体数值不多,而且符合 byte、 short 、int、 char, enum[枚举], String 这 6 种类型。虽然两个语句都可
以使用,建议使用 swtich 语句。
2) 其他情况:对区间判断,对结果为 boolean 类型判断,使用 if,if 的使用范围更广
for循环控制
注意事项和细节说明
ForDetail.java
1) 循环条件是返回一个布尔值的表达式
2) for(;循环判断条件;) 中的初始化和变量迭代可以写到其它地方,但是两边的分号不能省略。
3) 循环初始值可以有多条初始化语句,但要求类型一样,并且中间用逗号隔开,循环变量迭代也可以有多条变量迭代
语句,中间用逗号隔开。
4) 使用内存分析法,老师分析输出下面代码输出什么?
while循环条件判断
流程图结构
while循环流程图
while练习
package review_;
//while循环的实例
//输出是10句韩顺平教育
public class while01 {
public static void main(String[] args) {
int i = 1; //循环变量初始化
while(i <= 10){//循环条件
System.out.println("你好,韩顺平教育"+i);
i++;
}
System.out.println("退出了while循环继续执行");
}
}
do...while循环
循环结构
do..while循环注意事项:
1.循环条件的返回值是一个布尔类型的表达式
2.do...while循环是先执行,在判断,因此,它至少执行一次。
多重循环
1) 将一个循环放在另一个循环体内,就形成了嵌套循环。其中,for ,while ,do…while 均可以作为外层循环和内层循环。
【建议一般使用两层,最多不要超过 3 层, 否则,代码的可读性很差】
2) 实质上,嵌套循环就是把内层循环当成外层循环的循环体。当只有内层循环的循环条件为 false 时,才会完全跳出内
层循环,才可结束外层的当次循环,开始下一次的循环[听不懂,走案例]。
3) 设外层循环次数为 m 次,内层为 n 次,则内层循环体实际上需要执行 m*n 次
生产随机数:(int)(Math.random()*100)
break
countine
1) continue 语句用于结束本次循环, 继续执行下一次循环。
2) continue 语句出现在多层嵌套的循环语句体中时,可以通过标签指明要跳过的是哪一层循环 , 这个和前面的标签的
使用的规则一样.
return
-
题目练习:
package review_;
import java.util.Scanner;
//问题:编写一个程序,可以输入人的年龄,如果该同志的年龄大于18岁
//则输出“你的年龄大于18岁,要对自己的行为负责,送入监狱”
//思路分析
//1.接受输入的年龄,应该定义一个Scanner对象
//2.把年龄保存到一个变量 int age
//3.使用 if 判断 ,输出对应的信息
public class if01 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你的年龄:");
int age = scanner.nextInt();
if(age>18){
System.out.println("你的年龄已经成年,送入监狱");
}
System.out.println("程序继续执行。。。");
}
}
双分支结构if --else
package review_;
public class ifelse {
public static void main(String[] args) {
int x = 7;
int y = 4;
if(x>5){
if(y>5){
System.out.println(x+y);
}
System.out.println("韩顺平教育");
}else {
System.out.println("x is"+x);
}
}
}
package review_;
import java.util.Scanner;
public class ifelse {
public static void main(String[] args) {
double d1 = 33.5;
double d2 = 2.6;
if(d1 > 10.0 && d2 < 20.0) {
System.out.println("两个数的和=" + (d1 + d2));
}
//课后练习==>>定义两个变量int , 判断两者的和
//是否能被3又能被5整除,打印提示信息
//思路分析
//1、定义两个变量int num1,num2
//2.定义一个变量 int sum = num1 + num2;
//3.sum % 3, 5 后 等于0 可以说明可以整除
//4.使用 if - else 来提示对应信息
int num1 = 10;
int num2 = 1;
int num = num1 +num2;
if (num%3 == 0 && num % 5 == 0){
System.out.println("可以被3和5整除。");
}else {
System.out.println("不可以被整除。");
}
//判断一个年份是否是闰年,条件是符合下面的二者之一:
//1.年份能被4整除,但是不能被100整除:
//2.能被400整除
//思路分析
//1.定义 int year 保存年
//2. 年份能被4整除,但是不能被100整除 =>>year %4 == 0 && year % 100 != 0;
//3.能被400整除,=>> year % 400 == 0;
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你的年份:");
int year = scanner.nextInt();
if(year %4 == 0 && year % 100 != 0 || year%400 == 0 ){
System.out.println(year+"是闰年。");
}else {
System.out.println(year+"不是闰年");
}
}
}
多分支结构练习:
package review_;
import java.util.Scanner;
public class if03 {
// 案例演示 1
// 请大家看个案例[If03.java]:
// 输入保国同志的芝麻信用分:
// 如果:
// 1) 信用分为 100 分时,输出 信用极好;
// 2) 信用分为(80,99]时,输出 信用优秀;
// 3) 信用分为[60,80]时,输出 信用一般;
// 4) 其它情况 ,输出 信用 不及格
//5) 请从键盘输入保国的芝麻信用分,并加以判断
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你的信用分数:");
double grade = scanner.nextDouble();
if(grade>=1 && grade<= 100){
if(grade ==100){
System.out.println("信用极好");
}else if( grade>80 && grade <= 99){
System.out.println("信用优秀");
}else if(grade >60 && grade<= 80){
System.out.println("信用一般");
}else {
System.out.println("信用不及格");
}
}else {
System.out.println("你输入的信用成绩有误,请重新输入:");
}
}
}
嵌套分支
package review_;
import java.util.Scanner;
public class switchexercise {
public static void main(String[] args) {
// 使用switch 把小写类型的char型转为大写(键盘输入)。只转换a->A,b->B,c,d,e,其他
// 的输出”other“
Scanner scanner = new Scanner(System.in);
System.out.println("请输入你要转换的字符:");
char c1 = scanner.next().charAt(0);
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;
default:
System.out.println("你的输入有误");
}
//对学生成绩大于60分的,输出“合格”。低于60分的
// 输出“不合格”,(注:输入的成绩不能大于100,提示 成绩、60
// 思路分析
// 1.这道题,可以是使用 分支来完成,但是要求使用switch
// 2.这里我们需要进行一个转换,编程思路:
// 如果成绩在[60,100],(int )(成绩/60) = 1
// 如果成绩在[0,60],(int )(成绩/60) = 0
System.out.println("请输入你的成绩:");
double score = scanner.nextDouble();
switch ((int) (score / 60)) {
case 0:
System.out.println("不及格");
break;
case 1:
System.out.println("及格");
break;
default:
System.out.println("你的输入有误");
}
//根据用于指定的月份
//打印该月份所属的季节
//3,4,5 春季 6,7,8,夏季 9,10,11,秋季 12,1,2,冬季
System.out.println("请输入你的月份:");
int d1 = scanner.nextInt();
switch (d1) {
case 3:
case 4:
case 5:
System.out.println("春季");
break;
case 6:
case 7:
case 8:
System.out.println("夏季");
break;
case 9:
case 10:
case 11:
System.out.println("秋季");
break;
case 12:
case 1:
case 2:
System.out.println("冬季");
break;
default:
System.out.println("你的月份输入有误");
}
}
}
do...while循环练习
package review_;
import java.util.Scanner;
public class dowhile {
public static void main(String[] args) {
//打印1 - 100
//计算1 - 100 的和
//统计1 - 200 之间能够被5整除但是不能够被3整除的数
//如果李三不还钱,则老韩将会一直使出五连鞭,直到李三说还钱为止
//[system.out.println("老韩问:还钱吗?y/n")do..while
int i = 1;
int count = 0 ;
do {
if (i % 5 == 0 && i % 3 == 0 ){
System.out.println("i = " + i);
count++;
}
i++;
}while (i<= 200);
char answer;
do {
Scanner scanner = new Scanner(System.in);
System.out.println("老韩使出五连鞭,问还钱吗?y/n");
answer = scanner.next().charAt(0);
}while (answer != 'y');
System.out.println("已经还钱,退出程序");
}
}
打印乘法口诀:
package review_;
import java.util.Scanner;
//打印乘法口诀
public class dowhile {
public static void main(String[] args) {
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(j + "*" + i + "=" + j * i + "\t");
}
System.out.println();
}
//输出水仙花数
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个三位数字:");
int num = scanner.nextInt();
int a = num % 10;
int b = num / 10 % 10;
int c = num / 100;
if (a * a * a + b * b * b + c * c * c == num) {
System.out.println(num + "是水仙花数字");
} else {
System.out.println(num + "不是水仙花数");
}
}
}
打印金字塔