学习了流程控制语句的使用,if else判断语句,switch判断语句,for循环语句,while循环语句,while循环语句,跳出语句break.了解了case语句的穿透性,将键盘录入数据与流程控制语句进行了结合使用.学习了循环语句的区别,和使用的注意事项.昨天对键盘录入数据较为不熟悉,在今天一天的学习使用中,有了一定的提升.
1:switch语句的格式?针对格式的解释?以及注意事项?
switch语句格式:
switch(表达式) {
case 值1:
语句体1;
break; (中断,结束的意思)
case 值2:
语句体2;
break;
…
default: (默认的意思)
语句体n+1;
break;
}
格式解释:
switch ----->启用当前switch语句
表达式------>一般接收具体的变量
表达式的类型一般情况:byte,short,int,char
如果是jdk1.5以后,表达式的类型可以是"枚举"
如果是jdk1.7以后,表达式的类型可以是String类型 (String:是一个引用类型)
case语句---->需要将当前的case的值和switch中表达式进行比较,是否匹配
break语句---> 表示结束,中断 switch语句
default ---->case后面都不匹配,执行default
注意事项:
1)在Java语言中,case后面的值只能是常量,不能是变量
2)关于switch语句的中break(属于跳转控制语句中的一种)
break一般情况下建议不要省略,如果没有书写break语句,会出现case穿透现象!
3)关于default语句的位置问题
a)default语句中的break可以忽略不写,但是不建议
b)可以在switch语句中的任何位置,但是还要遵循switch的按照顺序进行执行(case中都不匹配,才能执行default)
c)如果default语句在语句中,break不能省略!
4)switch语句的结束条件:
a)语句break,语句结束
b)程序默认执行末尾,语句结束!
2:看程序,分析下面程序的结果:
int x = 2,y=3;
switch(x)
{
default:
y++;
case 3:
y++;
break;
case 4:
y++;
}
System.out.println(“y=”+y);
结果:y = 5
解答过程: default:
y++; // y = 3+1 = 4,没有break,继续
case 3:
y++; // y = 4+1 = 5
break; // 遇到break,结束
3:根据输入的值,判断当前季节(分别用if语句和switch语句实现)
3,4,5 属于春季
6,7,8 属于夏季
9,10,11属于秋季
12,1,2属于冬季
(考虑非法数据)
import java.util.Scanner;
class Test3 {
public static void main(String[] args){
Scanner sc = new Scanner(System.in) ;
System.out.println(“请输入月份”);
int a = sc.nextInt();
if (a3||a4||a5){
System.out.println(“春季”);
}
else if(a6||a7||a8){
System.out.println(“夏季”);
}
else if(a9||a10||a11){
System.out.println(“秋季”);
}
else if(a12||a1||a2){
System.out.println(“冬季”);
}
else{
System.out.println(“非法数据”);
}
}
}
4:for循环的格式?要能看懂执行流程。
用for循环完成如下案例
求1-100之间的偶数和
打印所有的水仙花数
偶数和
class Test6{
public static void main(String[] args){
int sum = 0 ;
for(int x = 0 ;x <= 100; x+=2){
sum += x ;
}
System.out.println(“1到100间的偶数和”+sum);
}
}
打印所有水仙花数
class Test11{
public static void main(String[] args){
int count = 0;
for(int x = 100 ; x <= 1000 ; x++ ){
int ge = x%10 ;
int shi = x/10%10 ;
int bai = x/10/10%10 ;
if(x == ge*ge*ge + shi*shi*shi + bai*bai*bai ){
System.out.println(x) ;
count ++ ;
}
}
System.out.println("共有"+count+"个");
}
}
5:while循环的格式?要能看懂执行流程
用while循环完成如下案例
a)求1-100之间的和 (见WhileDemo.java)
class Test7{
public static void main(String[] args){
int x =1;
int sum = 0 ;
while(x<=100){
sum += x;
x++ ;
}
System.out.println(“1到100间的整数和”+sum);
}
}
b)我国最高山峰是珠穆朗玛峰:8848m,我现在有一张足够大的纸张,厚度为:0.01m。请问,我折叠多少次,就可
以保证厚度不低于珠穆朗玛峰的高度?
class Test8{
public static void main(String[] args){
double x = 0.01;
int count = 0 ;
while(x<8848){
x *= 2;
count ++;
}
System.out.println(“需要折叠”+count+“次”);
}
}
6:键盘录入x的值,计算出y的并输出。
x和y的关系满足如下:
x>=3 y = 2x + 1;
-1<=x<3 y = 2x;
x<=-1 y = 2x – 1;
import java.util.Scanner;
class Test9{
public static void main(String[] args){
Scanner sc = new Scanner(System.in) ;
System.out.println("请输入x");
int x = sc.nextInt() ;
int y = 0 ;
if(x>=3){
y=2*x+1;
System.out.println(y);
}else if(-1<=x&x<3){
y=2*x;
System.out.println(y);
}else if(x<=-1){
y=2*x-1;
System.out.println(y);}
}
}
7:键盘录入数据,模拟单项选择题(注意:键盘录入的时候,Scanner不能录入字符—>可以考虑把A看成 65)
下面的人物喜欢谁?
A:马伊琍
B:马苏
C:高圆圆(“假设为正确答案”)
D:林志玲
import java.util.Scanner;
class Test10{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的选择");
int name = sc.nextInt();
switch(name){
case 64:
System.out.println("错误,不是马伊俐");
break ;
case 65:
System.out.println("错误,不是马苏");
break ;
case 66:
System.out.println("正确,是高圆圆");
break ;
case 67:
System.out.println("错误,不是林志玲");
break ;
default :
System.out.println("非法数据");
}
}
}