Java逻辑锻炼

学Java脑子转不过来 经典小题提高你的Java逻辑

Java 中超简单的题

1、判断奇偶

public class Ti01 {
    public static void main(String[] args) {
        // 第一种方法 使用条件语句判断数字的奇偶。
        int a = 10; // 声明变量一个 偶数
        int d = 11; // 声明变量一个 奇数
        //  条件语句判断奇偶
        if(a % 2 == 0){ // if () 里面的条件表达式 为 true(真)执行里面的代码块。
            System.out.println(a + "这个数字是偶数");
        }else {         //当if () 里面条件表达式为false (假)执行 else 里面的代码块。
            System.out.println(a + "这个数字是奇数");
        }
        if(d % 2 == 0){ // if () 里面的条件表达式 为 true(真)执行里面的代码块。
            System.out.println(d + "这个数字是偶数");
        }else {         //当if () 里面条件表达式为false (假)执行 else 里面的代码块。
            System.out.println(d + "这个数字是奇数");
        }
        // 第二种写法 调用方法
        if (p(a)){
            System.out.println(a + "这个数字是偶数");
        }else {
            System.out.println(a + "这个数字是奇数");
        }
        if (p(d)){
            System.out.println(d + "这个数字是偶数");
        }else {
            System.out.println(d + "这个数字是奇数");
        }
    }
    // 使用方法 定义一个判断奇偶的方法,所有判断奇偶的数值可以在这个方法里使用。
    public static boolean p(int a){
        if (a % 2 == 0){
            return true;
        }else {
            return false;
        }
        // 通过形参 a 将上面类局部变量的数值传到方法里,判断是偶数返回true,反之返回false。
    }
}

结果

10这个数字是偶数
11这个数字是奇数
10这个数字是偶数
11这个数字是奇数

2、判断账号密码输入正确

import java.util.Scanner;

public class Ti02 {
    public static void main(String[] args) {
        // 输入账号密码,判断输入是否正确,输入错误则重新输入 最多只能输入三次 错误冻结账号。
        String a = "123456"; // 设置一个 账户
        int    b = 654321;   // 设置一个 密码
        // 设置输入工具包
        Scanner s = new Scanner(System.in);
        // 输入错误重新输入 使用循环
        for (int i = 0; i < 3; i++) {
            // 输入的数据类型 要与声明变量的数据类型一致
            System.out.print("请输入账号:");
            String c = s.next();   // 输入字符串类型
            System.out.print("请输入密码:");
            int    d = s.nextInt();// 输入整数型类型
            // 因为要账号和密码都输入正确,所有c的值要与a的值一样,d的值要与b的值一样。
            // if () 里要有两个条件表达式 并且值为 true 使用 && 判断两个表达式是否都为 true。
            if ( a.equals(c) && b == d){ // equals 是字符串用来判断两个字符串是否相等,不能像 int 类型一样 使用 ==来判断相等。
                System.out.println("账号密码输入正确");
                break;
                // 账号密码都输入正确,不用再次循环,break 就是用来结束循环的。
            }else {
                if (i == 2){ // 一个小条件,当输入错误为第三次时,打印出账号冻结,并退出循环。
                    System.out.println("账号密码输入不正确已达三次,请一小时后重新输入。");
                    break;
                }
                System.out.println("账号密码输入不正确,请重新输入");
            }
        }

    }
}

输入正确结果

请输入账号:123456
请输入密码:654321
账号密码输入正确

输入错误三次结果

请输入账号:123
请输入密码:321
账号密码输入不正确,请重新输入
请输入账号:111
请输入密码:333
账号密码输入不正确,请重新输入
请输入账号:123456
请输入密码:123456
账号密码输入不正确已达三次,请一小时后重新输入。

Java 中亿点点 难度的题

1、问小明一年花了多少钱。
6公里(含)内3元;
6公里至12公里(含)4元;
12公里至22公里(含)5元;
22公里至32公里(含)6元;
32公里以上部分,
每增加1元可乘坐20公里
使用市政交通一卡通刷卡乘坐轨道交通,
每自然月内每张卡支出累计满100元以后的乘次,
价格给予8折优惠;满150元以后的乘次,
价格给予5折优惠;支出累计达到400元以后的乘次,不再享受打折优惠。

小明要坐一年地铁,每个月做的地铁的公里数不一样输入每月平均公里数,每个月还是60次,每个月的打折都重新算,问小明一年花了多少钱。

import java.util.Scanner;

public class Ti01 {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        // 声明一个 浮点型的空变量 用来装每个月的总钱数。
        float b1 = 0;
        // 这个循环是用来输入12个月的次数
        for (int i = 1; i <= 12; i++) {
            // 公里数不同,每个月的钱数不一样 声明五个 浮点型的空变量 用来装当月的总钱数。
            // 要写在第一个循环里面,因为要计算每个月,每次循环都需要清零来装新的数值,因此将每个月的钱数转到下面的 b1 里面。
            float a = 0; // 当月平均6公里装的钱数
            float a1 = 0;// 当月平均6公里到12公里装的钱数
            float a2 = 0;// 当月平均12公里到22公里装的钱数
            float a3 = 0;// 当月平均22公里到32公里装的钱数
            float a4 = 0;// 当月平均大于32公里装的钱数 并且 没大20公里 额外加一元钱
            System.out.print("输入"+i+"月平均做了多少公里:");
            int yue = s.nextInt();
            for (int j = 0; j < 60; j++) {
                if (yue<=6&&yue>0){
                    if (a>=100&&a<150){ // 当本月钱到100~150之间时,打8折优惠
                        a += 3*0.8;//
                    }else if (a>=150 && a<400){ // 当本月钱到150~400之间时,打5折优惠
                        a += 3*0.5;
                    }else {
                        a += 3;
                    }
                }else if (yue>6&&yue<=12){
                    if (a1>=100 && a1<150){ // 当本月钱到100~150之间时,打8折优惠
                        a1 += 4*0.8;

                    }else if (a1>=150 && a1<400){ // 当本月钱到150~400之间时,打5折优惠
                        a1 += 4*0.5;
                    }else {
                        a1 += 4;

                    }
                }else if (yue>12&&yue<=22){
                    if (a2>=100&&a2<150){ // 当本月钱到100~150之间时,打8折优惠
                        a2 += 5*0.8;
                    }else if (a2>=150 && a2<400){ // 当本月钱到150~400之间时,打5折优惠
                        a2 += 5*0.5;
                    }else {
                        a2 += 5;
                    }
                }else if (yue>22&&yue<=32){
                    if (a3>=100&&a3<150){ // 当本月钱到100~150之间时,打8折优惠
                        a3 += 6*0.8;
                    }else if (a3>=150 && a3<400){ // 当本月钱到150~400之间时,打5折优惠
                        a3 += 6*0.5;
                    }else {
                        a3 += 6;
                    }
                }else if (yue>32 ){
                    if ((yue-32)%20 !=0 ){
                        if (a4>=100&&a4<150){ // 当本月钱到100~150之间时,打8折优惠
                            a4 += ((yue-32)/20+6+1)*0.8;
                            //当月平均大于32公里装的钱数 并且 没大20公里 额外加一元钱。
                            //输入当月的公里数,比如输入58。(58-32)/20 取整数就是1 输入77:(77-32)/20 取整数就是2
                            //这样每大于 20 公里 就想当与加了 1元。
                        }else if (a4>=150 && a4<400){ // 当本月钱到150~400之间时,打5折优惠
                            a4 += ((yue-32)/20+6+1)*0.5;
                        }else{
                            a4 += (yue-32)/20+6+1;
                        }
                    }else {
                        if (a4>=100&&a4<150){ // 当本月钱到100~150之间时,打8折优惠
                            a4 += ((yue-32)/20+6)*0.8;
                        }else if (a4>=150 && a4<400){ // 当本月钱到150~400之间时,打5折优惠
                            a4 += ((yue-32)/20+6)*0.5;

                        }else{
                            a4 += (yue-32)/20+6;
                        }
                    }
                }else {
                    System.out.println("你输入的是个数字吗?");
                }
            }
            b1 += (a+a1+a2+a3+a4);// 将每个月的总钱数都加到这里。最后求出一年花了多少钱。
            System.out.println("到"+i+"月之前一共花了"+b1+"元");
        }
    }
}

结果

输入1月平均做了多少公里:6
到1月之前一共花了159.89995元
输入2月平均做了多少公里:10
到2月之前一共花了349.0999元
输入3月平均做了多少公里:12
到3月之前一共花了538.29987元
输入4月平均做了多少公里:14
到4月之前一共花了757.79987元
输入5月平均做了多少公里:16
到5月之前一共花了977.29987元
输入6月平均做了多少公里:20
到6月之前一共花了1196.7998元
输入7月平均做了多少公里:22
到7月之前一共花了1416.2998元
输入8月平均做了多少公里:24
到8月之前一共花了1665.2998元
输入9月平均做了多少公里:26
到9月之前一共花了1914.2998元
输入10月平均做了多少公里:30
到10月之前一共花了2163.2998元
输入11月平均做了多少公里:31
到11月之前一共花了2412.2998元
输入12月平均做了多少公里:58
到12月之前一共花了2723.4998元

2、小明每天跑5米,每当到3的倍数的当天,少跑了3米。请问小明多少天跑完100米

public class w01 {
    public static void main(String[] args) {
        // 声明2个变量,一个是天数,一个是多少米。
        int a = 0; // 米
        int b = 0; // 天
        // 循环条件 当跑到100米后 结束循环
        while (a<100){
            a += 5; // 每天跑5米
            b++; // 每天
            // 当到3的倍数的当天,少跑3米
                if (b % 3 ==0){
                    a -=3;
                }
        }
        System.out.print("第"+ b + "天");
        System.out.print("跑了"+a + "米");
    }
}

结果

第25天跑了101米

3、输入一个数字,求这个数字后面最小的素数

import java.util.Scanner;

public class Ti03 {
    public static void main(String[] args) {
        // 输入一个数字,求这个数字后面的最小素数。
        System.out.print("输入一个数字:");
        Scanner s = new Scanner(System.in);
        int a = s.nextInt();
        while (true){
            a = a + 1; // 因为要求这个数后面的最小素数,不加1的话会,输入的如果是素数,会直接判断这个素数是最小素数。
            boolean b = true; // 设置一个布尔值,来帮助下面的判断。
            for (int i = 2; i < a; i++) { // 2是最小的素数,所以我们直接从2开始判断。
                if(a % i == 0){
                    b = false; //if里面用来判断这个数不是素数的话,进入代码块b就会变为false。如果是素数就不会进入这个代码块,b依然为true
                    break;
                }
            }
            if(b){ //根据上面的判断,只有数字是素数的情况下。b才为true,进入这个判断的数字一定是素数。
                System.out.println("后面的最小素数是"+a); // 进来的第一个素数一定是输入数字后面最小的素数,直接结束循环。
                break;
            }
        }
    }
}

结果

输入一个数字:3
后面的最小素数是5

总结:

前期学习Java很痛苦,因为它太吃逻辑了,每道题都是看了一眼就会,一作直接傻眼。上面的题都是平常学习时卡了不知道我几个小时的题,辛辛苦苦做不出来,结果上网一查,只有几行代码就完事…有时以为做出来了,看了答案直接傻眼,自己错了也不知道怎么改。尽管如此,也要大量的练习来提升自己的逻辑,后面的路依然很长,祝愿所有学习Java的人,早日学成,出去高薪就业。

上一篇:练习打印101-150之间所有质数 打印三角形


下一篇:面试是在结善缘