java控制结构2之switch、for、while、do while

时间:2023-02-08 21:04:22

1. switch语句练习

例1

使用 switch 把小写类型的 char 型转为大写(键盘输入)。只转换 a, b, c, d, e. 其它的输出 "您的输入有误"

import java.util.Scanner;
public class Test12
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.println("请输入a-e");
char c1 = input.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;
case 'e':
System.out.println("E");
break;
default :
System.out.println("您的输入有误");
break;
}
}
}

例2

对学生成绩大于 60 分的,输出"合格"。低于 60 分的,输出"不合格"。(注:输入的成绩不能大于 100), 提示 成绩/60

思路分析

1. 这道题,可以使用 分支来完成, 但是要求使用 switch

2. 这里我们需要进行一个转换, 编程思路 :

如果成绩在 [60,100] , (int)(成绩/60) = 1

如果成绩在 [0,60) , (int)(成绩/60) = 0

import java.util.Scanner;
public class Test12
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.println("0-100");
double c1 = input.nextDouble();
if(c1>=0 && c1<=100)
{
switch((int)c1/60)
{
case 0:
System.out.println("不合格");
break;
case 1:
System.out.println("合格");
break;
}
}
else
{
System.out.println("输入成绩在0-100");
}

}
}

例3 119

根据用于指定月份,打印该月份所属的季节。

3,4,5 春季 6,7,8 夏季 9,10,11 秋季 12, 1, 2 冬季 [课堂练习, 提示 使 用穿透 ]

import java.util.Scanner;
public class Test12
{
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
System.out.println("输入月份");
int c1 = input.nextInt();
switch(c1)
{
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("输入月份不对");
}
}
}

2. switch和if的比较

2.1 如果判断的具体数值不多,而且符合 byte、 short 、int、 char, enum[枚举], String 这 6 种类型。虽然两个语句都可 以使用,建议使用 swtich 语句。

2.1 其他情况:对区间判断,对结果为 boolean 类型判断,使用 if,if 的使用范围更广

3. for循环 121

java控制结构2之switch、for、while、do while

1. for 关键字,表示循环控制

2. for 有四要素: (1)循环变量初始化(2)循环条件(3)循环操作(4)循环变量迭代

3. 循环操作 , 这里可以有多条语句,也就是我们要循环执行的代码

4.  如果 循环操作(语句) 只有一条语句,可以省略 {}, 建议不要省略

流程图

java控制结构2之switch、for、while、do while

//for循环
//要求打印10遍我爱你
public class Test12
{
public static void main(String[] args)
{
//传统方法,太过冗余
// System.out.println("我爱你");
// System.out.println("我爱你");
// System.out.println("我爱你");
// System.out.println("我爱你");
// System.out.println("我爱你");
// System.out.println("我爱你");
// System.out.println("我爱你");
// System.out.println("我爱你");
// System.out.println("我爱你");
// System.out.println("我爱你");

//是for循环
for(int i=1;i<=10;i++)
{
System.out.println("我爱你");
}

}
}

4. for循环注意细节 123

1) 循环条件是返回一个布尔值的表达式

2) for(;循环判断条件;) 中的初始化和变量迭代可以写到其它地方,但是两边的分号不能省略。

3) 循环初始值可以有多条初始化语句,但要求类型一样,并且中间用逗号隔开,循环变量迭代也可以有多条变量迭代语句,中间用逗号隔开。

//for循环注意事项
public class Test12
{
public static void main(String[] args)
{
//此写法也对
// for(int i=1;i<=10;)
// {
// System.out.println("你好");
// i++;
// }
//System.out.println(i);//报错,因为int i=1写在了for循环小括号里,i只能在循环体中使用

//此写法也对
int i=0;
for(;i<=10;)
{
System.out.println("你好");
i++;
}
System.out.println("i="+i);//11

//表示无限循环
for(;;)
{
System.out.println("ok");
}
}
}

判断输出

//输出什么
public class Test12
{
public static void main(String[] args)
{
int count = 3;
for(int i=0,j=0; i<count; i++,j+=2)
{
System.out.println("i="+i+" j="+j);
}
}
}

5. for循环基本练习

例1

打印 1~100 之间所有是 9 的倍数的整数,统计个数 及 总和,[化繁为简,先死后活]

1. 化繁为简 : 即将复杂的需求,拆解成简单的需求,逐步完成 编程 = 思想 --练习-> 代码

2. 先死后活 : 先考虑固定的值,然后转成可以灵活变化的值

public class Test13
{
public static void main(String[] args)
{
//思路分析
//打印 1~100 之间所有是 9 的倍数的整数,统计个数 及 总和
//化繁为简 第 115页
//(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;
int start = 1;
int end = 100;
int t = 9;
for(int i=start;i<=end;i++)
{
if(i%t==0)
{
System.out.println("i="+i);
count++;
sum+=i;
}
}
System.out.println("count="+count);
System.out.println("sum="+sum);
}
}

例2 125

完成下面的表达式输出

java控制结构2之switch、for、while、do while

public class Test13
{
public static void main(String[] args)
{
int n = 5;
for(int i=0;i<=n;i++)
{
System.out.println(i+"+"+(n-i)+"="+n);
}
}
}

6. while循环 127

java控制结构2之switch、for、while、do while

6.1 程序流程图

java控制结构2之switch、for、while、do while

//while循环
public class Test13
{
public static void main(String[] args)
{
int i=1;//循环变量的初始值
while(i<=10)//循环条件
{
System.out.println("你好"+i);
i++;
}
}
}

7. while循环细节即例题 128

7.1 注意

1) 循环条件是返回一个布尔值的表达式

2) while 循环是先判断再执行语句

7.2 例1

打印 1—100 之间所有能被 3 整除的数 [使用 while ]

//打印 1—100 之间所有能被 3 整除的数 [使用 while ] 
public class Test13
{
public static void main(String[] args)
{
int i =1;
while(i<=100)
{
if(i%3==0)
{
System.out.println("i="+i);
}
i++;
}
}
}

7.3 例2

打印 40—200 之间所有的偶数 [使用 while]

//打印 40—200 之间所有的偶数 [使用 while]
public class Test13
{
public static void main(String[] args)
{
int j = 40;
while(j<=200)
{
if(j%2==0)
{
System.out.println("j="+j);
}
j++;
}
}
}

8. do..while循环 129

8.1 基本语法

循环变量初始化;

do{

循环体(语句);

循环变量迭代;

}while(循环条件);

8.2 说明

1. do while 是关键字

1. 也有循环四要素, 只是位置不一样

2. 先执行,再判断,也就是说,一定会至少执行一次

3. 最后 有一个 分号 ;

4. while 和 do..while (常用于写菜单)

8.3 程序流程图 130

java控制结构2之switch、for、while、do while

//do..while循环
public class Test13
{
public static void main(String[] args)
{
int i=1;//循环变量
do
{
System.out.println("你好"+i);
i++;
}while(i<=10);
}
}

9. do..while循环练习 131

9.1 例1

计算1+2+3+...100的值

//计算1+2+3+...100的值
public class Test13
{
public static void main(String[] args)
{
int i=1;
int sum=0;
do
{
sum=sum+i;
i++;
}while(i<=100);
System.out.println(sum);
}
}

9.2 例2 131

统计 1---200 之间能被 5 整除但不能被 3 整除的个数

//统计 1---200 之间能被 5 整除但不能被 3 整除的个数
public class Test13
{
public static void main(String[] args)
{
int i = 1;
int count = 0;
do
{
if(i%5==0 && i%3!=0)
{
System.out.println("i="+i);
count++;
}
i++;
}while(i<=200);
System.out.println(count);
}
}

9.3 例3 132

如果李三不还钱,则老韩将一直使出五连鞭,直到李四说还钱为止

//如果李三不还钱,则将一直使出五连鞭,直到李四说还钱为止
import java.util.Scanner;
public class Test13
{
public static void main(String[] args)
{
//化繁为简
//(1) 不停的问还钱吗?
//(2) 使用 char answer 接收回答, 定义一个 Scanner 对象
//(3) 在 do-while 的 while 判断如果是 y 就不在循环
Scanner input = new Scanner (System.in);
char answer = ' ';//定义初始化answer为空
do
{
System.out.println("使出五连鞭");
System.out.println("还不还钱?y/n");
answer = input.next().charAt(0);
System.out.println("李四的回答是:"+answer+"\n");
}while(answer!='y');//不是y就循环
System.out.println("李四还钱了");
}
}