判断与循环练习

Java学习笔记(新手纯小白向)

第一章 JAVA基础概念

第二章 JAVA安装和环境配置

第三章 IntelliJ IDEA安装

第四章 运算符

第五章 运算符联系

第六章 判断与循环

第七章 判断与循环练习


文章目录

系列文章目录

前言

if判断语句题目 

一、李雷买手机

1.需求

2.解题方案

3.操作步骤

4.参考答案

二、求三个数中最小值

1.需求

2.解题方案

3.操作步骤

4.参考答案

三、整存整取定期储蓄业务

1.需求

2.解题方案

3.操作步骤

4.参考答案

四、商场购物打折

1.需求

2.解题方案

3.操作步骤

4.参考答案

 五、个人所得税计算

1.需求

2.解题方案

3.操作步骤

4.参考答案

switch选择语句题目

一、模拟计算器

1.需求

2.解题方案

3.操作步骤

4.参考答案

二、哟,只有一个?

循环语句题目

一、求范围内数字和

1.需求

2.训练提示

3.参考答案

二、统计范围中,既能被3整除,又能被5整除的数字个数

1.需求

2.训练提示

3.操作步骤

4.参考答案

三、折纸到珠穆朗玛峰的高度

1.需求

2.参考答案

四、判断回文整数

1.需求

2.参考答案

五、两数相除,得到商和余数

1.需求

2.参考答案

六、输出猪年年份

1.需求

2.解题方案

3.操作步骤

4.参考答案

七、计算1988年到2019年的所有闰年年份

1.需求

2.解题方案

3.操作步骤

4.参考答案


前言

此章节极为重要,是以后提升代码能力和思维的关键基础,需要琢磨得比较透彻。


if判断语句题目 

一、李雷买手机

1.需求

        李雷想买一个价值7988元的新手机,她的旧手机在二手市场能卖1500元,而手机专卖店推出以旧换新的优惠,把她的旧手机交给店家,新手机就能够打8折优惠。为了更省钱,李雷要不要以旧换新?请在控制台输出。

2.解题方案

        使用if...else语句判断

3.操作步骤

  1. 计算不使用以旧换新时的花费。
  2. 计算使用以旧换新时的花费。
  3. 使用if..else语句判断哪种方式更省钱,并输出结果

4.参考答案

package test;

public class Test16 {
    public static void main(String[] args) {
        //定义新手机的价格
        int price = 7988;
        //定义旧手机的价格
        int money = 1500;

        //以旧换新打8折
        double cash1 = price * 0.8;

        //不参加以旧换新
        double cash2 = price - money;

        //判断哪种方式更省钱
        if (cash1 >cash2){
            System.out.println("不参加参加以旧换新更省钱");
        }else {
            System.out.println("参加以旧换新更省钱");
        }

    }
}

二、求三个数中最小值

1.需求

        让用户依次录入三个整数,求出三个数中的最小值,并打印到控制台。

2.解题方案

  1. 使用Scanner键盘录入三个数字,使用三元运算符实现

  2. 使用Scanner键盘录入三个数字,使用if..else的嵌套实现(黑马不做要求,我们自己对自己要求高一点)

3.操作步骤

  1. 使用三次键盘录入的方法让用户输入三个整数
  2. 使用三元运算符求出最小值
  3. 打印输出最小值

4.参考答案

package test;

import java.util.Scanner;

public class Test17 {
    public static void main(String[] args) {
        //依次录入三个整数
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入第一个整数:");
        int number1 = sc.nextInt();
        System.out.println("请输入第二个整数:");
        int number2 = sc.nextInt();
        System.out.println("请输入第三个整数:");
        int number3 = sc.nextInt();

        //求出三个数中的最小值(if...else嵌套)
        if (number1 > number2) {
            int result1 = number2;
            if (result1 < number3) {
                System.out.println("三个数中的最小值为:" + result1);
            } else {
                System.out.println("三个数中的最小值为:" + number3);
            }
        } else {
            int result1 = number1;
            if (result1 < number3) {
                System.out.println("三个数中的最小值为:" + result1);
            } else {
                System.out.println("三个数中的最小值为:" + number3);
            }
        }

        //求出三个数中的最小值(三元运算符实现)
        if (number1 > number2) {
            int result2 = number2 < number3 ? number2 : number3;
            System.out.println("三个数中的最小值为:" + result2);
        } else {
            int result2 = number2 < number3 ? number2 : number3;
            System.out.println("三个数中的最小值为:" + result2);
        }
    }

}

三、整存整取定期储蓄业务

1.需求

        某银行推出了整存整取定期储蓄业务,其存期分为一年、两年、三年、五年,到期凭存单支取本息。存款年利率表如下:

​ 存期 年利率(%)

​ 一年 2.25

​ 两年 2.7

​ 三年 3.25

​ 五年 3.6

请存入一定金额(1000起存),存一定年限(四选一),计算到期后得到的本息总额。

提示:

​ 存入金额和存入年限均由键盘录入

​ 本息计算方式:本金+本金×年利率×年限

2.解题方案

        使用Scanner和if..else...的嵌套操作。

3.操作步骤

  1. 键盘录入金额和年份。
  2. 使用多条件if...else判断年份,计算本息金额。
  3. 输出结果。

4.参考答案

package test;

import java.util.Scanner;

public class Test18 {
    public static void main(String[] args) {
        //键盘录入存入金额,1000起存;存入年限,一年、两年、三年、五年
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入您的存入金额:");
        int money = sc.nextInt();
        System.out.println("请输入您的存入年限:");
        int year = sc.nextInt();

        //计算不同业务最后获得的本息总额
        if (year == 1) {
            double cash = money + money * 0.0225 * year;
            System.out.println("该业务的本息总额为:" + cash);
        } else if (year == 2) {
            double cash = money + money * 0.027 * year;
            System.out.println("该业务的本息总额为:" + cash);
        } else if (year == 3) {
            double cash = money + money * 0.0325 * year;
            System.out.println("该业务的本息总额为:" + cash);
        } else if (year == 5) {
            double cash = money + money * 0.036 * year;
            System.out.println("该业务的本息总额为:" + cash);
        } else {
            System.out.println("暂无此业务");

        }

    }
}

四、商场购物打折

1.需求

某商场购物可以打折,具体规则如下:

​普通顾客购不满100元不打折,满100元打9折;

​会员购物不满200元打8折,满200元打7.5折;

​不同打折规则不累加计算。

请根据此优惠计划进行购物结算,键盘录入顾客的类别(0表示普通顾客,1表示会员)和购物的折前金额(整数即可),输出应付金额(小数类型)。

2.解题方案

        使用Scanner键盘录入和if..else判断语句的嵌套使用来完成。

3.操作步骤

  1. 键盘录入会员类别和购物金额。
  2. 先使用if-else判断顾客类别。
  3. 在不同的顾客类别中再使用if-else语句判断购物金额。
  4. 输出结果。

4.参考答案

package test;

import java.util.Scanner;

public class Test19 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        //键盘录入顾客的类别(0表示普通顾客,1表示会员)
        System.out.println("请输入顾客类别:");
        int type = sc.nextInt();
        //键盘录入购物的折前金额
        System.out.println("请输入您的购物金额:");
        int money = sc.nextInt();

        //普通顾客购不满100元不打折,满100元打9折
        //会员购物不满200元打8折,满200元打7.5折
        //根据此优惠计划进行购物结算
        //不同打折规则不累加计算
        if (type == 0){
            double cash = money>=100?money*0.9:money;
            System.out.println("您的应付金额为:"+cash);
        } else if (type ==1) {
            double cash = money>=200?money*0.75:money*0.8;
            System.out.println("您的应付金额为:"+cash);
        }else {
            System.out.println("没有此类别顾客哟");
        }
    }
}

 五、个人所得税计算

1.需求

2019年1月1日起,国家推出新的个人所得税政策,起征点上调值5000元。也就是说税前工资扣除三险一金(三险一金数额假设是税前工资的10%)后如果不足5000元,则不交税。如果大于5000元,那么大于5000元的部分按梯度交税,具体梯度比例如下:

​0 ~ 3000元的部分,交税3%

​3000 ~ 12000元的部分,交税10%

​12000 ~ 25000的部分 , 交税20%

​25000 ~ 35000的部分,交税25%

​35000 ~ 55000的部分,交税30%

​55000 ~ 80000的部分,交税35%

​超过80000的部分,交税45%

比如:你入职一家企业后,税前工资是15000(差不多得了,我的期望就这个,甚至比我预期还高点),则你每月该交个税的部分是15000-1500-5000=8500元,个税缴纳数额是3000×3%+5500×10%=640元。税后工资12860元。

请完成一个个税计算程序,在用户输入税前工资后,计算出他对应的纳税数额,以及税后工资为多少?

2.解题方案

        使用多条件的if...else对应各个纳税梯度,分别计算每一个梯度的纳税数额。

3.操作步骤

  1. 提示用户输入税前工资,使用键盘录入让用户输入一个整数。
  2. 计算工资中应交税部分。也就是去除三险一金和起征点数额。
  3. 使用多条件if..else..对每个区间分别判断,用每个梯度的计算公式求出对应的纳税数额。
  4. 根据求出的纳税数额求出税后工资。

4.参考答案

package test;

import java.util.Scanner;

public class Test20 {
    public static void main(String[] args) {
        //键盘录入税前工资
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入您的税前工资:");
        int salary = sc.nextInt();

        //税前工资扣除三险一金(三险一金数额假设是税前工资的10%)后如果不足5000元,则不交税。如果大于5000元,那么大于5000元的部分按梯度交税
        //计算扣除三险一金后的税前工资
        double wage = salary - salary * 0.1;
        //判断是否交税
        if (wage <= 5000) {
            double tax = 0;
            System.out.println("您的纳税数额为:" + tax);
            double income = wage - tax;
            System.out.println("您的税后工资为:" + income);
        } else {
            //定义变量为工资的纳税部分
            double tax = wage - 5000;
            //开始判断并计算纳税额和税后工资
            if (tax <= 3000) {
                double taxation = tax * 0.03;
                System.out.println("您的纳税数额为:" + taxation);
                double income = wage - taxation;
                System.out.println("您的税后工资为:" + income);
            } else if (tax > 3000 && tax <= 12000) {
                double taxation = 90 + (tax - 3000) * 0.1;
                System.out.println("您的纳税数额为:" + taxation);
                double income = wage - taxation;
                System.out.println("您的税后工资为:" + income);
            } else if (tax > 12000 && tax <= 25000) {
                double taxation = 990 + (tax - 12000) * 0.2;
                System.out.println("您的纳税数额为:" + taxation);
                double income = wage - taxation;
                System.out.println("您的税后工资为:" + income);
            } else if (tax > 25000 && tax <= 35000) {
                double taxation = 3590 + (tax - 25000) * 0.25;
                System.out.println("您的纳税数额为:" + taxation);
                double income = wage - taxation;
                System.out.println("您的税后工资为:" + income);
            } else if (tax > 35000 && tax <= 55000) {
                double taxation = 6090 + (tax - 35000) * 0.3;
                System.out.println("您的纳税数额为:" + taxation);
                double income = wage - taxation;
                System.out.println("您的税后工资为:" + income);
            } else if (tax > 55000 && tax <= 80000) {
                double taxation = 12090 + (tax - 55000) * 0.35;
                System.out.println("您的纳税数额为:" + taxation);
                double income = wage - taxation;
                System.out.println("您的税后工资为:" + income);
            } else {
                double taxation = 20840 + (tax - 80000) * 0.45;
                System.out.println("您的纳税数额为:" + taxation);
                double income = wage - taxation;
                System.out.println("您的税后工资为:" + income);
            }

        }
    }
}

switch选择语句题目

一、模拟计算器

1.需求

模拟计算器功能,对键盘录入的两个int类型的数据进行加、减、乘、除的运算,并打印运算结果。

要求:

​键盘录入三个整数,其中前两个整数代表参加运算的数据,第三个整数为要进行的运算(1:表示加法运算,2:表示减法运算,3:表示乘法运算,4:表示除法运算),演示效果如下:

请输入第一个整数: 30

​请输入第二个整数: 40

​请输入您要进行的运算(1:表示加法,2:表示减法,3:表示乘法,4:表示除法): 1

​控制台输出:30+40=70

2.解题方案

        使用switch判断语句完成。

3.操作步骤

  1. 使用键盘录入三个变量。
  2. 使用switch判断语句对第三个变量进行判断,匹配要执行的操作。
  3. 在每一个case中分别对第一个变量和第二个变量进行不同的操作。

4.参考答案

package test;

import java.util.Scanner;

public class Test21 {
    public static void main(String[] args) {
        //键盘录入三个整数,其中前两个整数代表参加运算的数据,第三个整数为要进行的运算
        //1:表示加法运算,2:表示减法运算,3:表示乘法运算,4:表示除法运算
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入第一个整数:");
        int number1 = sc.nextInt();
        System.out.println("请输入第二个整数:");
        int number2 = sc.nextInt();
        System.out.println("请输入第三个整数:");
        int number3 = sc.nextInt();

        //进行判断并输出
        switch (number3) {
            case 1:
                int result1 = number1 + number2;
                System.out.println(number1 + "+" + number2 + "=" + result1);
                break;
            case 2:
                int result2 = number1 - number2;
                System.out.println(number1 + "-" + number2 + "=" + result2);
                break;
            case 3:
                int result3 = number1 * number2;
                System.out.println(number1 + "*" + number2 + "=" + result3);
                break;
            case 4:
                int result4 = number1 / number2;
                System.out.println(number1 + "/" + number2 + "=" + result4);
                break;
        }
    }
}

二、哟,只有一个?

循环语句题目

一、求范围内数字和

1.需求

        键盘录入两个数字number1和number2表示一个范围,求这个范围之内的数字和。

2.训练提示

  1. number1和number2不知道谁大谁小,需要先判断大小关系
  2. 确定大小之后,可以循环得到范围里面的每一个数
  3. 把每一个数字进行累加即可

3.参考答案

package test;

import java.util.Scanner;

public class Test22 {
    public static void main(String[] args) {
        //键盘录入两个数字表示一个范围
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入第一个整数:");
        int number1 = sc.nextInt();
        System.out.println("请输入第二个整数:");
        int number2 = sc.nextInt();

        //判断两个整数的大小关系,确定区间
        if (number1 > number2) {
            int left = number2;
            int right = number1;
            int sum = 0;
            for (int i = left; i <= right; i++) {
                sum = sum + i;
            }
            System.out.println("这个范围内的数字和为:" + sum);
        } else if (number1 < number2) {
            int left = number1;
            int right = number2;
            int sum = 0;
            for (int i = left; i <= right; i++) {
                sum = sum + i;
            }
            System.out.println("这个范围内的数字和为:" + sum);
        } else {
            int sum = number1 + number2;
            System.out.println("这个范围内的数字和为:" + sum);
        }

    }

}

二、统计范围中,既能被3整除,又能被5整除的数字个数

1.需求

        键盘录入两个数字,表示一个范围。统计这个范围中。既能被3整除,又能被5整除数字有多少个?

2.训练提示

  1. 需要先判断键盘录入两个数字的大小关系
  2. 确定大小之后,可以循环得到范围里面的每一个数
  3. 找到一个符合条件的数字,统计变量就自增一次

3.操作步骤

  1. 确定键盘录入的两个数字大小关系
  2. 定义for循环,找到范围之内的每一个数字
  3. 对每一个数字进行判断
  4. 符合条件统计变量自增一次

4.参考答案

package test;

import java.util.Scanner;

public class Test23 {
    public static void main(String[] args) {
        //键盘录入两个数字,表示一个范围
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入第一个整数:");
        int number1 = sc.nextInt();
        System.out.println("请输入第二个整数:");
        int number2 = sc.nextInt();

        //既能被3整除,又能被5整除数字有多少个
        //判断两数的大小关系,确定区间
        int left = 0;
        int right = 0;
        if (number1 < number2) {
            left = number1;
            right = number2;
        } else if (number1 > number2) {
            left = number2;
            right = number1;
        } else {

        }

        //循环得到范围里面的符合要求的数
        int count = 0;
        for (int i = left; i <= right; i++) {
            if (i % 3 == 0 && i % 5 == 0) {
                count++;
            }
        }
        System.out.println("在此范围内既能被3整除,又能被5整除数字有" + count + "个");
    }
}

三、折纸到珠穆朗玛峰的高度

1.需求

        世界最高山峰是珠穆朗玛峰(8844.43米=8844430毫米),假如我有一张足够大的纸,它的厚度是0.1毫米。请问,我折叠多少次,可以折成珠穆朗玛峰的高度?

2.参考答案

package test;

public class Test24 {
    public static void main(String[] args) {
        //定义变量纸的厚度和珠穆朗玛峰的高度
        double thickness = 0.1;
        double height = 8844430;

        //循环折纸
        int count = 0;
        while (thickness < height) {
            thickness = thickness * 2;
            count++;
        }
        System.out.println("折叠" + count + "次,可以折成珠穆朗玛峰的高度");
    }
}

四、判断回文整数

1.需求

        给你一个整数x。如果x是一个回文整数,打印true,否则,返回false。解释:回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121是回文,而123不是。

2.参考答案

package test;

import java.util.Scanner;

public class Test25 {
    public static void main(String[] args) {
        //键盘录入一个整数
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个整数:");
        int number = sc.nextInt();

        //从左至右将数颠倒
        //定义一个变量保存颠倒的数
        int result = 0;
        while (number != 0) {
            int right = number % 10;
            result = result * 10 + right;
            number = number / 10;
        }
        System.out.println(result);
        System.out.println("该数是否为回文数:"+(result == number));
    }
}

五、两数相除,得到商和余数

1.需求

        给定两个整数,被除数dividend和除数divisor(都是正数,且不超过int的范围)。将两数相除,要求不使用乘法、除法和%运算符。得到商和余数。

2.参考答案

package test;

import java.util.Scanner;

public class Test26 {
    public static void main(String[] args) {
        //给定两个整数,被除数dividend和除数divisor
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入被除数:");
        int dividend = sc.nextInt();
        System.out.println("请输入除数:");
        int divisor = sc.nextInt();

        //将两数相除,要求不使用乘法、除法和 % 运算符。得到商和余数。
        //实质上为被除数一直减去除数
        int yushu = 0;
        int shang = 0;
        while (dividend >= divisor) {
            yushu = dividend - divisor;
            dividend = yushu;
            shang++;
        }
        System.out.println("商为:"+shang);
        System.out.println("余数为:"+yushu);
    }
}

六、输出猪年年份

1.需求

        已知2019年是猪年,请在控制台输出从1949年到2019年中所有是猪年的年份。

2.解题方案

        使用for循环逐年判断,根据2019是猪年这个条件,使用if来判断其他是猪年的年份。

3.操作步骤

  1. 定义for循环,1949到2019的年份是循环次数。
  2. 对每个年份逐个判断,如果年份和2019的差值是12的倍数,说明这年是猪年
  3. 打印符合条件的年份

4.参考答案

package test;

public class Test27 {
    public static void main(String[] args) {
        //已知2019年是猪年,请在控制台输出从1949年到2019年中所有是猪年的年份。

        System.out.println("1949年到2019年中猪年的年份为:");
        int count = 0;
        for (int i = 2019; i >= 1949; i--) {
            //猪年的年数为2019与12的倍数的差
            int pig_Year = 2019 - count *12;
            if (pig_Year >= 1949) {
                System.out.println(pig_Year);
                count++;
            }
        }
        System.out.println("1949年到2019年中猪年的年份数共有" + count + "个");
    }
}

七、计算1988年到2019年的所有闰年年份

1.需求

        中国有闰年的说法。闰年的规则是:四年一闰,百年不闰,四百年再闰。(年份能够被4整除但不能被100整除算是闰年,年份能被400整除也是闰年)。请打印出1988年到2019年的所有闰年年份。

2.解题方案

  1. 使用while循环完成

  2. 使用for循环完成

3.操作步骤

  1. 定义for循环,循环开始是1988,结束是2019
  2. 在循环中对年份进行判断
  3. 如果符合闰年的判断条件,则打印该年份

4.参考答案

package test;

public class Test28 {
    public static void main(String[] args) {
        //中国有闰年的说法。闰年的规则是:四年一闰,百年不闰,四百年再闰。
        //(年份能够被4整除但不能被100整除算是闰年,年份能被400整除也是闰年)。请打印出1988年到2019年的所有闰年年份。

        //使用for循环,定义循环的范围,即1988-2019
        System.out.println("1988年到2019年的所有闰年年份为:");
        for (int i = 1988; i <= 2019; i++) {
            //使用短路逻辑运算符效率更高,使用普通逻辑运算符也可以
            if ((i % 4 == 0 && i % 100 != 0) || (i % 400 == 0)) {
                System.out.println(i);
            }
        }
        //使用while循环改写,定义起始年份1988
        int year = 1988;
        while (year<= 2019){
            //判断与for循环一样
            if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
                System.out.println(year);
            }
            //年份自增一次
            year++;
        }
    }
}

总结

        相信大家也看得出来,本人的代码写得都比较冗长,有的可能是没必要那样写的,但是作为一个初学者来说,首先要对自己自信,不管别人怎么说,你都要相信自己。别人说你,你就说:“you can you up,no can no bb”,如果别人真的上了,还写得比你好,那是好事,学他/她怎么写(为什么要用/呢,你细品),偷师;如果他/她写的没你好,也不必去挖苦别人,他已经不配了。

        其实博主还是自卑的,别骂我,写的真不好,别骂我!别逼我,求你了。但是当然可以给我留下小建议呀。并且如果发现了我文章中的错误,可以告诉我哟。

        大家如果想看的话,一定要看目录呀,这个真的很方便,快速定位。

  • 25
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值