Java基础 案例综合1

猜数字

import java.util.Random;
import java.util.Scanner;

public class Demo07 {
    public static void main(String[] args) {
        //要完成猜数字的游戏,首先需要有一个要猜的数字,使用随机数生成该数字,范围1到100
        Random r = new Random();
        int number = r.nextInt(100) + 1;

        while (true) {
            //使用程序实现猜数字,每次均需要输入猜测的数字值,需要使用键盘录入实现
            Scanner sc = new Scanner(System.in);

            System.out.println("请输入你要猜测的数字:");
            int guessNumber = sc.nextInt();

            //比较输入的数字和系统产生的数据,需要使用分支语句,这里使用if..else..if..格式,根据不同情况进行猜测结果显示
            if (guessNumber > number) {
                System.out.println("你猜的数字" + guessNumber + "大了");
            } else if (guessNumber < number) {
                System.out.println("你猜的数字" + guessNumber + "小了");
            } else {
                System.out.println("恭喜你猜中了");
                break;
            }
        }
    }
}

 

减肥计划if版

import java.util.Scanner;

public class Demo01 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个星期数:");
        int week = sc.nextInt();
        //对星期数进行判断,这里用if语句实现
        if (week < 1 || week > 7) {
            System.out.println("你输入的星期数有误");
        } else if (week == 1) {
            System.out.println("跑步");
        } else if (week == 2) {
            System.out.println("游泳");
        } else if (week == 3) {
            System.out.println("慢走");
        } else if (week == 4) {
            System.out.println("动感单车");
        } else if (week == 5) {
            System.out.println("拳击");
        } else if (week == 6) {
            System.out.println("爬山");
        } else {
            System.out.println("大吃一顿");
        }
    }
}

 

 减肥计划switch版

import java.util.Scanner;

public class Demo02 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("输入一个星期数:");
        int week = sc.nextInt();
        //对星期数进行判断,这里使用switch语句实现
        switch (week) {
            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("你输入的星期数有误");
        }
    }
}

逢七过 

需求:朋友聚会的时候可能会玩一个游戏:逢七过。规则是:从任意一个数字开始报数,当你要报                的数字包含7或者是7的倍数时都要说:过。为了帮助大家更好的玩这个游戏,这里我们直接在          控制台打印出1-100之间的满足逢七必过规则的数据。这样,大家将来在玩游戏的时候,就知          道哪些数据要说:过。
思路:
        1.数据在1-100之间,用for循环实现数据的获取
        2.根据规则,用if语句实现数据的判断:要么个位是7,要么十位是7,要么能够被7整除
                      x%10 == 7            x/10%10 ==7            x%7==0

public class Demo03 {
    public static void main(String[] args) {
        //数据在1~100之间,用for循环实现数据的获取
        for (int x = 1; x <= 100; x++) {
            //根据规则,用if语句实现数据的判断:要么个位是7,要么十位是7,要么能被7整除
            if (x % 10 == 7 || x / 10 % 10 == 7 || x % 7 == 0) {
                System.out.print(x+" ");
            }
        }
    }
}

 不死神兔

需求:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生            一对兔子,假如兔子都不死,问第二十个月的兔子对数为多少?
找规律:
        第一个月:1                                                                                                                                          第二个月:1                                                                                                                                          第三个月:2                                                                                                                                          第四个月:3                                                                                                                                          第五个月:5.
        数据连起来:1,1,2,3,5...

public class Demo04 {
    public static void main(String[] args) {
        int[] arr = new int[20];
        arr[0] = 1;
        arr[1] = 1;
        for (int x = 2; x < arr.length; x++) {
            arr[x] = arr[x - 2] + arr[x - 1];
        }
        System.out.println("第二十个月的兔子对数是:" + arr[19]);
    }
}

 百钱白鸡

需求:我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,              鸡雏三值钱一。
        百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?                                                                                分析:
        假设鸡翁x只,鸡母y只,鸡锥z只,则下面的式子是成立的
        x+ y+ z = 100;                                                                                                                                    5*x + 3*y + z/3 = 100;
       如果单独只看一种鸡型,则下面的式子是成立的                                                                               0<=x<=20
       0<=y=33                                                                                                                                             0<=z<=100

       使用穷举法就可以罗列出x,y,z的值。
思路:
       第1层循环,用于表示鸡翁的范围,初始化表达式的变量定义为x=O,判断条件是x<=20                 第2层循环,用于表示鸡母的范围,初始化表达式的变量定义为y=0,判断条件是y<=33                   这个时候,用于表示鸡雏的变量z= 100 - x-y

public class Demo05 {
    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);
                }
            }
        }
    }
}


数组元素求和

需求:有这样的一个数组,元素是(68,27,95,88,171,996,51,210)。求出该数组中满足要求的元                   素和,要求是:求和的元素个位和十位都不能是7,并且只能是偶数
思路:
        定义一个数组,用静态初始化完成数组元素的初始化                                                                        定义一个求和变量,初始值是O
        遍历数组,获取到数组中的每一个元素
        判断该元素是否满足条件,如果满足条件就累加

public class Demo06 {
    public static void main(String[] args) {
        int[] arr = {65, 27, 95, 88, 171, 996, 51, 210};
        int sum = 0;
        for (int x = 0; x < arr.length; x++) {
            if (arr[x] % 10 != 7 && arr[x] / 10 % 10 != 7 && arr[x] % 2 == 0) {
                sum += arr[x];
            }
        }
        System.out.println("sum:" + sum);
    }
}

 

 数组内容相同

需求:设计一个方法,用于比较两个数组的内容是否相同
思路:
        定义两个数组,分别使用静态初始化完成数组元素的初始化                                                              定义一个方法,用于比较两个数组的内容是否相同
                返回值类型: boolean
                参数: int[]arr, int[] arr2
        比较两个数组的内容是否相同,按照下面的步骤实现就可以了
                首先比较数组长度,如果长度不相同,数组内容肯定不相同,返回false                                            其次遍历,比较两个数组中的每一个元素,只要有元素不相同,返回false                                        最后循环遍历结束后,返回true
        调用方法,用变量接收

public class Demo07 {
    public static void main(String[] args) {
        int[] arr = {11, 22, 33, 44, 55};
        int[] arr2 = {11, 22, 33, 44, 66};
        boolean flag = compare(arr, arr2);
        System.out.println(flag);
    }

    public static boolean compare(int[] arr, int[] arr2) {
        if (arr.length != arr2.length) {
            return false;
        }
        for (int x = 0; x < arr.length; x++) {
            if (arr[x] != arr2[x]) {
                return false;
            }
        }
        return true;
    }
}

查找 

需求:已知一个数组arr = {19,28,37,46,50};键盘录入一个数据,查找该数据在数组中的索引,并              在控制台输出找到的索引值。

 分析:
         键盘录入一个数据后,让这个数据和数组中的每一个元素进行比较,如果数据值相等,返               回该数据值对应的索引即可。
        但是,假如录入了一个数组中不存在的数据,这个时候,就没有任何内容输出了,很明显              是有问题的,在实际开发中,如果对应的索引不存在,我们一般都是返回一个负数,而且              经常用-1来表示。
思路:
        定义一个数组,用静态初始化完成数组元素的初始化                                                                        键盘录入要查找的数据,用一个变量接收
        定义一个索引变量,初始值为-1
        遍历数组,获取到数组中的每一个元素
        拿键盘录入的数据和数组中的每一个元素进行比较,如果值相同,就把该值对应的索引赋              值给索引变量,并结束循环

import java.util.Scanner;

public class Demo08 {
    public static void main(String[] args) {
        int[] arr = {19, 28, 37, 46, 50};
        Scanner sc = new Scanner(System.in);
        System.out.println("输入要查找的数据");
        int number = sc.nextInt();
        int index = getIndex(arr, number);
        System.out.println("index:" + index);
    }

    public static int getIndex(int[] arr, int number) {
        int index = -1;
        for (int x = 0; x < arr.length; x++) {
            if (arr[x] == number) {
                index = x;
                break;
            }
        }
        return index;
    }
}

 

反转 

需求:已知一个数组arr = {19,28,37,46,50};用程序实现把数组中的元素值交换,
        交换后的数组arr = {50,46,37,28,19};并在控制台输出交换后的数组元素。

public class Demo09 {
    public static void main(String[] args) {
        int[] arr = {19, 28, 37, 46, 50};
        for (int start = 0, end = arr.length - 1; start <= end; start++, end--) {
            int temp = arr[start];
            arr[start] = arr[end];
            arr[end] = temp;
        }
        printArray(arr);
    }

    public static void printArray(int[] arr) {
        System.out.print("[");
        for (int x = 0; x < arr.length; x++) {
            if (x == arr.length - 1) {
                System.out.print(arr[x]);
            } else {
                System.out.print(arr[x] + ",");
            }
        }
        System.out.print("]");
    }
}

 

评委打分

需求:                                                                                                                                                          在编程竞赛中,有6个评委为参赛的选手打分,分数为0-100的整数分。
        选手的最后得分为:去掉一个最高分和一个最低分后的4个评委平均值(不考虑小数部分)。
思路:
        定义一个数组,用动态初始化完成数组元素的初始化,长度为6                                                        键盘录入评委分数
        由于是6个评委打分,所以,接收评委分数的操作,用循环改进                                                         定义方法实现获取数组中的最高分(数组最大值),调用方法                                                              定义方法实现获取数组中的最低分(数组最小值),调用方法
        定义方法实现获取数组中的所有元素的和(数组元素求和),调用方法                                                按照计算规则算出平均分

 

public class Demo10 {
    public static void main(String[] args) {
        int[] arr = new int[6];
        Scanner sc = new Scanner(System.in);
        for (int x = 0; x < arr.length; x++) {
            System.out.println("请输入第" + (x + 1) + "个评委的打分");
            arr[x] = sc.nextInt();
        }
        int max = getMax(arr);
        int min = getmin(arr);
        int sum = getSum(arr);
        int avg = (sum - max - min) / (arr.length - 2);
        System.out.println("选手的最终得分是:" + avg);
    }

    public static int getMax(int[] arr) {
        int max = arr[0];
        for (int x = 1; x < arr.length; x++) {
            if (arr[x] > max) {
                max = arr[x];
            }
        }
        return max;
    }

    public static int getmin(int[] arr) {
        int min = arr[0];
        for (int x = 1; x < arr.length; x++) {
            if (arr[x] < min) {
                min = arr[x];
            }
        }
        return min;
    }

    public static int getSum(int[] arr) {
        int sum = 0;
        for (int x = 0; x < arr.length; x++) {
            sum += arr[x];
        }
        return sum;
    }

    public static void prinArray(int[] arr) {
        System.out.print("[");
        for (int x = 0; x < arr.length; x++) {
            if (x == arr.length - 1) {
                System.out.print(arr[x]);
            } else {
                System.out.print(arr[x] + ",");
            }
        }
        System.out.print("]");
    }
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值