您的位置:首页 > 编程语言 > Java开发

选择结构--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();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  switch if java