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
1. for 关键字,表示循环控制
2. for 有四要素: (1)循环变量初始化(2)循环条件(3)循环操作(4)循环变量迭代
3. 循环操作 , 这里可以有多条语句,也就是我们要循环执行的代码
4.
如果 循环操作(语句) 只有一条语句,可以省略 {}, 建议不要省略
流程图
例
//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
完成下面的表达式输出
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
6.1 程序流程图
例
//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
//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("李四还钱了");
}
}