1.switch后面使用的表达式可以是哪些数据类型的。
byte、short、char、int、枚举类型(JDK5.0新增)、String类型(JDK7.0新增)
2. 使用switch语句改写下列if语句:
int a = 3;
int x = 100;
if(a==1)
x+=5;
else if(a==2)
x+=10;
else if(a==3)
x+=16;
else
x+=34;
解:int a = 3;
Int x = 100;
switch(a){
case 1:
x+=5;
break;
case 2:
x+=10;
break;
case 3:
x+=16;
break;
Default:
x+=34;
}
System.out.println(x);
3.谈谈你对三元运算符、if-else和switch-case结构使用场景的理解
凡是可以使用三元运算符,switch-case的地方,都可以改写成if-else;
反之:不成立:能用if-else写的不一定能用三元运算符,switch-case;
如果程序既可以使用三元运算符,又可以使用if-else结构,那么优先选择三元运算符。原因:简洁执行效率高。
如果程序既可以使用switch-case,又可以使用if-else结构,那么优先switch-case。原因:简洁执行效率高。
4. 如何从控制台获取String和int型的变量,并输出?使用代码实现
Import java.util.Scanner;
class Sc{
Scanner scan = new Scanner(System.in);
String str = scan.next();
Int num = scan.nextInt();
System.out.println(“str=”+str+”num”+num);
}
5.使用for循环遍历100以内的奇数,并计算所有的奇数的和并输出。
Int sum=0;//变量要赋值
For(int i=1;i<=100;i++){
If(i%2 != 0){
System.out.println(i);
Sum +=i;
}
}
System.out.println(“所有的奇数和为:”+sum );
代码练习:
1.输入一个数判断奇偶性
System.out.println("---------一个整数判断奇偶性--------------");
System.out.print("输入一个整数:");
int num = scan.nextInt();
if(num !=0&&num%2==0){
System.out.println("是偶数");
}else if(num !=0&&num%2==1){
System.out.println("是奇数");
}else{
System.out.println("非奇非偶");
}
2.由键盘输入三个整数分别存入变量num1、num2、num3,
对它们进行排序(使用 if-else if-else),并且从小到大输出。
import java.util.Scanner;
class IfTest2{
public static void main(String[] args){
//随机输入三个数从小到大列
Scanner scan = new Scanner(System.in);
System.out.print("输入第一个整数num1:");
int num1 = scan.nextInt();
System.out.print("输入第二个整数num2:");
int num2 = scan.nextInt();
System.out.print("输入第三个整数num3:");
int num3 = scan.nextInt();
if(num1>=num2){
if(num1<=num3){
System.out.println(num2+","+num1+","+num2);
}else if(num3<=num2){
System.out.println(num3+","+num2+","+num1);
}else{
System.out.println(num2+","+num3+","+num1);
}
}else{
if(num3<=num1){
System.out.println(num3+","+num1+","+num2);
}else if(num3>=num2){
System.out.println(num1+","+num2+","+num3);
}else{
System.out.println(num1+","+num3+","+num2);
}
}
}
}
3.例题2.对学生成绩大于60分的,输出“合格”。低于60分的,输出“不合格”。
说明:如果switch-case结构的多个case的执行语句相同,则可以考虑进行合并
System.out.println("--------------例题2.-----------");
Scanner scan = new Scanner(System.in);
System.out.print("请输入成绩(0~100):");
int score = scan.nextInt();
/*
说明:如果switch-case结构的多个case的执行语句相同,则可以考虑进行合并
合并:
switch(score/10){
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
System.out.println("不及格");
break;
case 6:
case 7:
case 8:
case 9:
case 10:
System.out.println("及格");
break;
}
*/
//第一种
switch(score/10){
case 0:
System.out.println("不及格");
break;
case 1:
System.out.println("不及格");
break;
case 2:
System.out.println("不及格");
break;
case 3:
System.out.println("不及格");
break;
case 4:
System.out.println("不及格");
break;
case 5:
System.out.println("不及格");
break;
case 6:
System.out.println("及格");
break;
case 7:
System.out.println("及格");
break;
case 8:
System.out.println("及格");
break;
case 9:
System.out.println("及格");
break;
case 10:
System.out.println("及格");
break;
}
switch(score/60){//第二种方法:最优解
case 0:
System.out.println("不及格");
break;
case 1:
System.out.println("及格");
break;
}
4.例题4.根据用于指定月份,打印该月份所属的季节。
3,4,5 春季 6,7,8 夏季 9,10,11 秋季 12, 1, 2 冬季
说明:break在switch-case中是可选的:一般在开发中都会带有break
System.out.println("--------------例题3.-----------");
System.out.print("请输入月份(1~12):");
int month = scan.nextInt();
switch(month){
case 12:
case 1:
case 2:
System.out.println("冬季");
break;
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;
}
5.从键盘分别输入年、月、日,判断这一天是当年的第几天
注:判断一年是否是闰年的标准:
1)可以被4整除,但不可被100整除
或
2)可以被400整除
说明:
1.凡是可以使用switch-case的结构,都可以转换为if-else.反之。不成立。
2.当我们写分支结构时,当发现既可以使用switch-case,(同时,switch中表达式的取值情况不太多),
又可以使用if-else时,我们有先用switch-case。原因:switch-case执行效率稍高。
break在switch-case中是可选的:一般在开发中都会带有break
import java.util.Scanner;
class SwitchCaseExer{
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
System.out.println("--------------练习1-----------");
System.out.print("请输入year:");
int year = scan.nextInt();
System.out.print("请输入month(1~12):");
int month1 = scan.nextInt();
System.out.print("请输入day(1~31),2月只有28天:");
int day = scan.nextInt();
int sumDay = 0;//定义一个变量来代表总天数
switch(month1){
case 12:
sumDay += 30;
case 11:
sumDay += 31;
case 10:
sumDay += 30;
case 9:
sumDay += 31;
case 8:
sumDay += 31;
case 7:
sumDay += 30;
case 6:
sumDay += 31;
case 5:
sumDay += 30;
case 4:
sumDay += 31;
case 3:
//判断是否为闰年
if((year%4==0&&year%100!=0)||year%400==0){
sumDay += 29;
}else{
sumDay +=28;
}
case 2:
sumDay += 31;
case 1:
sumDay += day;
}
System.out.println(year+"年"+month1+"月"+day+"日"+"是"+year+"年的第"+" "+sumDay+" "+"天");
}
}