选择结构--if和switch语句
2018-03-26 10:43
597 查看
一、if语句
第一种格式:if(比较表达式){
语句体;
}
比较表达式返回值:
true: 将会执行语句体;
false: 不会执行语句体;
注意:
A. if语句的大括号可以省略不写, 但是不建议.
因为省略之后, if语句所能控制的就只能是1条语句
B. if()后面注意不要有分号
第二种格式:
if(比较表达式) {
语句体1;
}else {
语句体2;
}
第三种格式:
if(比较表达式1) {
语句体1;
}else if(比较表达式2) {
语句体2;
}else if(比较表达式3) {
语句体3;
}
...
else {
语句体n+1;
}
例题:
1.商场推出幸运抽奖活动,抽奖规则如下:
(1)键盘录入四位数字(1000-9999的数字),作为顾客的会员卡号
(2)该会员卡号(键盘录入的四位数字)各位数字之和大于20,则为幸运客户
2.打印格式:
请输入4位会员卡号:3569
会员卡号3569各位之和:23
会员卡号3569是幸运客户
请输入4位会员卡号:1234
会员卡号3569各位之和:10
会员卡号3569不是幸运客户
import java.util.Scanner; public class Ex04 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入四位会员卡号:"); int num = sc.nextInt(); //1234 if (num>=1000 && num<=9999) { int a = num/1000; int b = num/100%10; int c = num/10%10; int d = num%10; int sum = a+b+c+d; System.out.println("会员卡号" + num + "各位之和:" + sum); if(sum>20) System.out.println("会员卡号" + num + "是幸运客户"); else System.out.println("会员卡号" + num + "不是幸运客户"); } else System.out.println("输入有误,会员卡号在1000~9999之间!"); sc.close(); } }
1.键盘录入三个整数,按照从小到大的顺序输出
2.如果用户输入的是3 2 1,程序运行后打印格式"按照从小到大排序后的顺序为:1 2 3"
import java.util.Scanner; public class Ex08 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入三个整数:"); int num1 = sc.nextInt(); int num2 = sc.nextInt(); int num3 = sc.nextInt(); int temp; if (num1>num2){ temp = num1; num1 = num2; num2 = temp; } if (num1>num3){ temp = num1; num1 = num3; num3 = temp; } if (num2>num3){ temp = num2; num2 = num3; num3 = temp; } System.out.println("三个数从小到大依次为:" + num1 + "," + num2 + "," + num3); sc.close(); } }
学校举行运动会,百米赛跑成绩在10秒以内的学生有资格进决赛,根据性别分为男子组和女子组。
import java.util.Scanner; public class Ex11 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入百米赛跑成绩:"); double score = sc.nextDouble(); System.out.println("请输入性别:"); String gender = sc.next(); if(score<10){ if (gender.equals("男")) System.out.println("请进入男子组"); else if (gender.equals("女")) System.out.println("请进入女子组"); else System.out.println("输入出错,请输入‘男’或者‘女’"); } else System.out.println("对不起,您已经被淘汰!"); sc.close(); } }
某商场购物可以打折,具体办法如下:
普通顾客购满100元打9折
会员购物打8折
会员购物满200元打7.5折
请根据此优惠计划进行购物结算
import java.util.Scanner; public class Ex12 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("您是会员吗?(是为1,否为0):"); int identity = sc.nextInt(); System.out.println("您的购物金额:"); double money = sc.nextDouble(); if(identity == 0) { if(money>100) System.out.println("打九折"); else System.out.println("不打折"); } else if (identity == 1) { if(money>200) System.out.println("打八折"); else System.out.println("打九折"); } else System.out.println("会员输入错误,请输入0或1!"); sc.close(); } }
某人准备去海南旅游,现在要订购机票。机票的价格收季节忘记、淡季的影响,头等舱和经济舱价格也不同。
假设机票原价假设为5000元(键盘录入),4-10月为旺季,旺季头等舱打9折,经济舱打8折,淡季头等舱打5折,经济舱打4折。
编写程序,使用嵌套if选择结构根据出行的月份和选择的仓位输出实际的机票价格
import java.util.Scanner; public class Ex13 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入机票价格:"); int money = sc.nextInt(); System.out.println("请输入月份:"); int month = sc.nextInt(); System.out.println("请输入机票类型(0为经济舱,1为头等舱):"); int type = sc.nextInt(); if (month>=4 && month<=10) { if (type == 0) { System.out.println("您的原票价为:" +money+ ",打折后为:"+ (money*0.8)); } else if(type == 1){ System.out.println("您的原票价为:" +money+ ",打折后为:"+ (money*0.9)); } else { System.out.println("输入出错,机票类型为0或1!"); } } else if((month>10 && month<=12)||(month>=1 && month<4)){ if (type == 0) { System.out.println("您的原票价为:" +money+ ",打折后为:"+ (money*0.4)); } else if(type == 1){ System.out.println("您的原票价为:" +money+ ",打折后为:"+ (money*0.5)); } else { System.out.println("输入出错,机票类型为0或1!"); } } else { System.out.println("输入错误!月份范围在1~12!"); } sc.close(); } }
二、switch语句
格式:switch(将要匹配的值) {
case 值1:
语句体1;
break;
case 值2:
语句体2;
break;
…
default:
语句体n+1;
break;
}
注意事项:
case后面的值只能是常量, 不能是变量
case后面的值不允许重复定义!
问题:
break语句可以省略吗?
可以省略, 但是会出现case穿透的现象!
default语句可以省略吗?
可以!但是不建议,因为default语句可以对范围外的错误值给出提示
表达式(将要匹配的值)可以接受的值为?
基本数据类型:
只要是能够自动类型提示为int的都没问题
byte short char int , 注意: long不可以
引用数据类型:
jdk1.5之后可以接受枚举
jdk1.7之后可以接受的是字符串
分析以下需求,并用代码实现:
1.根据工龄(整数)给员工涨工资(整数),工龄和基本工资通过键盘录入
2.涨工资的条件如下:
[10-15) +5000
[5-10) +2500
[3~5) +1000
[1~3) +500
[0~1) +200
3.如果用户输入的工龄为10,基本工资为3000,程序运行后打印格式"您目前工作了10年,基本工资为3000元, 应涨工资 5000元,涨后工资 8000元"
import java.util.Scanner; public class Ex05 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入您的工龄:"); int E_age = sc.nextInt(); System.out.println("请输入您的工资:"); int E_mon = sc.nextInt(); int E_monp; switch (E_age) { case 0: E_monp = E_mon+200; System.out.println("您目前工作了"+E_age+"年,基本工资为 "+E_mon+"元, 应涨工资 200元,涨后工资 "+E_monp+"元"); break; case 1: case 2: E_monp = E_mon+500; System.out.println("您目前工作了"+E_age+"年,基本工资为 "+E_mon+"元, 应涨工资 500元,涨后工资 "+E_monp+"元"); break; case 3: case 4: E_monp = E_mon+1000; System.out.println("您目前工作了"+E_age+"年,基本工资为 "+E_mon+"元, 应涨工资 1000元,涨后工资 "+E_monp+"元"); break; case 5: case 6: case 7: case 8: case 9: E_monp = E_mon+2500; System.out.println("您目前工作了"+E_age+"年,基本工资为 "+E_mon+"元, 应涨工资 2500元,涨后工资 "+E_monp+"元"); break; case 10: case 11: case 12: case 13: case 14: case 15: E_monp = E_mon+5000; System.out.println("您目前工作了"+E_age+"年,基本工资为 "+E_mon+"元, 应涨工资 5000元,涨后工资 "+E_monp+"元"); break; default: System.out.println("输入错误,工龄范围为0~15年!"); break; } sc.close(); } }
分析以下需求,并用代码实现:
1.功能描述:模拟计算器功能,对键盘录入的两个int类型的数据进行加、减、乘、除的运算,并打印运算结果
2.要求:
(1)键盘录入三个整数,其中前两个整数代表参加运算的数据,
第三个整数为要进行的运算(0:表示加法运算,1:表示减法运算,2:表示乘法运算,3:表示除法运算)
(2)使用今天所学知识完成功能
(3)演示格式如下:
请输入第一个整数:30
请输入第二个整数:40
请输入您要进行的运算(0:表示加法运算,1:表示减法运算,2:表示乘法运算,3:表示除法运算):0
控制台输出:30+40=70
import java.util.Scanner; public class Ex06 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入第一个整数:"); int num1 = sc.nextInt(); System.out.println("请输入第二个整数:"); int num2 = sc.nextInt(); System.out.println("请输入您要进行的运算(0:加法,1:减法,2:乘法,3:除法):"); int num3 = sc.nextInt(); switch (num3) { case 0: System.out.println(num1+"+"+num2+"="+(num1+num2)); break; case 1: System.out.println(num1+"-"+num2+"="+(num1-num2)); break; case 2: System.out.println(num1+"*"+num2+"="+(num1*num2)); break; case 3: System.out.println(num1+"/"+num2+"="+(num1/num2)); break; default: System.out.println("未找到相应的计算,请检查您的输入!"); break; } sc.close(); } }
相关文章推荐
- C语言学习-选择结构if语句、switch语句
- 选择结构语句---if语句,switch语句
- switch语句与多重if选择结构的异同点
- 黑马程序员__选择结构if语句_switch语句
- 条件选择语句(if结构与switch结构)
- (转)选择结构if语句和switch语句的区别
- 浅谈选择结构if语句和switch语句的区别
- Java语法基础(三)----选择结构的if语句、switch语句
- Java语法基础之选择结构的if语句、switch语句详解
- C语言的选择结构 (if 语句 和 switch 语句)
- java基础——流程控制(选择结构)switch语句
- 【JavaSE学习笔记】选择结构语句_switch语句
- python基础选择结构if语句判断三角形
- 控制流程语句之顺序语句、if判断语句、键盘录入、switch选择判断语句
- [零基础学软件开发10]选择结构if语句介绍之3
- JAVA学习(四):Java流程控制语句(顺序结构、if条件语句、switch条件语句、循环语句与跳转语句)
- 3.20 switch结构 if和switch的选择
- [零基础学软件开发9]选择结构if语句介绍之2
- C++学习 【3.3】 程序设计初步--选择结构和if语句
- 17_if语句_单选择_双选择_多选择结构