java逻辑循环经典案例(不死神兔、百钱百鸡、逢七过、评委打分、数组翻转)

4 篇文章 0 订阅
3 篇文章 0 订阅

1减肥计划:

星期一:跑步;
星期二:游泳;
星期三:慢走;
星期四:动感单车
星期五:拳击
;星期六:爬山;
星期日:好好吃一顿.

import java.util.Scanner;
/*
        减肥计划:
        星期一:跑步;星期二: 游泳;星期三:慢走;星期四:动感单车
        星期五:拳击;星期六:爬山;星期日:好好吃一顿.

* */
public class lianxi_01 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入星期数");
        int i = sc.nextInt();
        printWeek(i);
    }
    public static void printWeek(int i){
        if(i<1||i>7){
            System.out.println("你输入的星期数有误");
        }else if(i==1){
            System.out.println("跑步");
        }else if(i==2){
            System.out.println("游泳");
        }else if(i==3){
            System.out.println("漫步");
        }else if(i==4){
            System.out.println("动感单车");
        }else if(i==5){
            System.out.println("拳击");
        }else if(i==6){
            System.out.println("爬山");
        }else{
            System.out.println("好好吃一顿");
        }
    }
}

第二种方法:

import java.util.Scanner;

/*
      减肥计划:
        星期一:跑步;星期二: 游泳;星期三:慢走;星期四:动感单车
        星期五:拳击;星期六:爬山;星期日:好好吃一顿.
* */
public class lianxi_02 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入你的星期数");
        int i = sc.nextInt();
        printWeek(i);
    }
    public static void printWeek(int i){
        switch (i){
            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;
            default :
                System.out.println("你输入的星期数有误");
                break;
        }
    }
}

2逢七过:

需求:
朋友聚会的时候可能会玩一个游戏:逢七过
规则是:从任意一个数字开始报数,当你要报的数字包含7或者是7的倍数的时候都要说:过.
这样,大家将来在玩游戏的时候,就知道哪些数据要说:过.

public class lianxi_03 {
    public static void main(String[] args) {
        sevebGuo();
    }
    public static void sevebGuo(){
        for (int i = 1; i <=100 ; i++) {
            if(i%10==7||i/10==7||i%7==0){
                System.out.println("过");
            }else{
                System.out.print(i+" ");
            }

        }
    }
}

3百钱百鸡

需求:
我国古代数学张邱健在<算经>一书中提到的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一.
百钱百鸡,问鸡翁,鸡母,鸡雏各几何?
思路:
1.第一层循环,用于表示鸡翁的范围,初始化表达式的变量定义为 x = 0,判断条件是 x<=20
2.第2层循环,用于表示鸡母的范围,初始化表达式的变量定义为 y = 0,判断条件是y<=33
3.这个时候,用于表示鸡雏的变量z = 100-x-y
4.判断表达式 z%3 0和表达式5x+3y+z/3100是否同时成立,如果成立,输出对应的x,y,z的值,就是对应的鸡翁,鸡母,鸡雏的值

public class lianxi_04 {
    public static void main(String[] args) {
        for (int x = 0; x <= 20; x++) {
            for (int y = 0; y <= 33; y++) {
                int z = 100 - x - y;
                if (z % 3 == 0 && 5 * x + 3 * y + z / 3 == 100) {
                    System.out.println("公鸡" + x + "母鸡" + y + "小鸡" + z);
                }
            }
        }
    }
}

4

需求:
定义一个数组求,求数组内符合要求的元素的和.
个位数和十位数不能有7,而且是偶数

/*
        需求:
            定义一个数组求,求数组内符合要求的元素的和.
            个位数和十位数不能有7,而且是偶数

* */
public class lianxi_05 {
    public static void main(String[] args) {
        int [] arr = {68,27,95,88,171,996,51,210};
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            if(arr[i]%10!=7&&arr[i]/10%10!=7&&arr[i]%2==0){
                System.out.println("满足条件的元素:"+arr[i]);
                sum+=arr[i];
            }
        }
        System.out.println("sum :"+sum);
    }
}

5

判断两个数组内的元素是否相同:
分析:
1.数组相同第一点肯定要长度相同;
2.数组只要其元素相同就说明相同,所以判断第一个数组的元素和第二个素组的元素是否相等就可以了。
3.我这里如果相等就返回true,否者返回false;

public class lianxi_06 {
    public static void main(String[] args) {
        int [] arr = {1,2,3,2};
        int [] arr1 = {2,2,3,1};
        boolean arr2 = Arr(arr, arr1);
        System.out.println(arr2);
    }
    //判断连个数组内的元素是否相等的方法。
    public static boolean Arr(int[] arr,int[] arr1){
        //int sum = 0;
        if(arr.length!=arr1.length){
            return false;
        }
        //判断第一个数组在第二个数组内有没有相等的元素,没有就返回false
        for (int i = 0; i < arr.length; i++) {
          //用于两个数组内有相等的元素时计数用的
            int sum = 0;
            for (int i1 = 0; i1 < arr1.length; i1++) {
                if(arr[i]==arr1[i1]){
                 sum++;
                }
            }
            if(sum==0){
                return false;
            }
        }
        //判断第二个数组内的元素是否与第一个数组内的元素有相同的元素,如果没有就返回false
        for (int i1 = 0; i1 < arr.length; i1++) {
        //用于两个数组内有相等的元素时计数用的
            int sum1 = 0;
            for (int i = 0; i < arr1.length; i++) {
                if(arr[i]==arr1[i1]){
                    sum1++;
                }
            }
            if(sum1==0){
                return false;
            }
        }
        return true;
    }
}

6数组翻转

需求:
1.吧数组内的元素对调,
例如:int [ ] arr = {1,2,7,9,10,5}翻转后
int [ ] arr = {5,10,9,7,2,1}
注意:虽然翻转与数组反着输出的结果是一样的但是方法是不一样的,

/*
        数组的翻转
* */
public class lianxi_08 {
    public static void main(String[] args) {
        int [] arr = {1,2,3,4,5,6,7,8};
        Arr(arr);
        ergodicArr(arr);
    }
    //创建一个翻转的方法
    public static void Arr(int [] arr){
        int hezi = 0;
        //数组的一半就可以当做循环次数,再利用一个盒子用于翻转用
        for (int i = 0; i <arr.length/2 ; i++) {
            hezi = arr[i];
            arr[i] = arr[arr.length-1-i];
            arr[arr.length-1-i] = hezi;
        }
    }
    //遍历数组的方法
    public static void ergodicArr(int [] arr){
        System.out.print("[");
        for (int i = 0; i < arr.length; i++) {
            if(i==arr.length-1){
                System.out.print(arr[i]);
            }else{
                System.out.print(arr[i]+",");
            }
        }
        System.out.println("]");
    }
}

7 评委打分

需求:
6个评委打分,去掉6个评委中最小值和最大值,然后剩下的取平均值
把评委打的分数放到一个数组里.
分析:
1.先创建一个求数组中的最大值方法.
2.创建一个求数组中最小值的方法.
3.创建一个求数组的和的方法.
4.然后在主方法中录入分数并求出平均值.

public class lianxi_09 {
    public static void main(String[] args) {
        int [] arr = new int[6];
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i <arr.length ; i++) {
            System.out.println("输入第"+(i+1)+"评委的分数");
            arr[i] = sc.nextInt();
        }
        //导出最大值
        int i = maxArr(arr);
        //导出最小值
        int i1 = minArr(arr);
        //导出所有分数的和
        int i2 = sumArr(arr);
        int a = (i2-i-1)/(arr.length-2);
        System.out.print("平均值是:"+a);
    }
    //1.先创建一个求数组中的最大值方法.
    public static int maxArr(int [] arr){
        int max = 0;
        for (int i = 0; i < arr.length; i++) {
            if(max<arr[i]){
                max = arr[i];
            }
        }
        return max;
    }
    //2.创建一个求数组中最小值的方法.
    public static int minArr(int [] arr){
        int min = 0;
        for (int i = 0; i < arr.length; i++) {
            if(min<arr[i]){
                min = arr[i];
            }
        }
        return min;
    }
    // 3.创建一个求数组的和的方法.
    public static int sumArr(int [] arr){
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            sum+=arr[i];
        }
        return sum;
    }

}

8不死神兔

有一只兔子,从出生后第3个月起每个月都生只兔子,小兔子长到第三个月后每个月又生一只兔子,假如兔子都不死,问每个月的兔子总数为多少?
前十二个月的兔子数量:
分析:从第一个兔子开始,第1个月1只兔子,由于“长到第三个月后每个月又生一只兔子”,所以第2个月也是1只兔子,第3个月时可以生一只兔子,
所以总数为2只,这时,其中有一只是以后每个月都可以生一只兔子的老兔子,另一只是一只新兔子,它只有在第三个月的时候才可以每个月生一只兔子;
这样的话,第4个月的兔子总数为3只,…以此类推,从第1个月到第12个月的兔子总数分别为:1,1,2,3,5,8,13,21,34,55,89,144

/*
*       不死神兔
* 有一只兔子,从出生后第3个月起每个月都生只兔子,小兔子长到第三个月后每个月又生一只兔子,假如兔子都不死,问每个月的兔子总数为多少?
前十二个月的兔子数量:
分析:从第一个兔子开始,第1个月1只兔子,由于“长到第三个月后每个月又生一只兔子”,所以第2个月也是1只兔子,第3个月时可以生一只兔子,
所以总数为2只,这时,其中有一只是以后每个月都可以生一只兔子的老兔子,另一只是一只新兔子,它只有在第三个月的时候才可以每个月生一只兔子;
这样的话,第4个月的兔子总数为3只,…以此类推,从第1个月到第12个月的兔子总数分别为:1,1,2,3,5,8,13,21,34,55,89,144
*/
public class GodRabbit {
    public static void main(String[] args) {
        int i1 = twentyRabbit(20);
        System.out.println(i1);
    }
    public static  int  twentyRabbit(int j){
        int [] arr = new int[j];
        arr[0] = 1;
        arr[1] = 1;
        for (int i = 2; i < arr.length; i++) {
            arr[i] = arr[i-1]+arr[i-2];
        }
        return arr[j-1];
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值