Java 基础知识练习(笔记)

这篇博客包含了多个编程问题的解决方案,包括根据输入的星期数规划减肥活动、打印1~100之间满足逢七必过的数字、解决不死神兔问题、实现百钱百鸡问题的计算,以及数组元素的求和、比较、查找和反转等操作。此外,还涉及了评委打分的平均值计算,实现了去除最高分和最低分后的平均分计算。
摘要由CSDN通过智能技术生成

1.减肥计划:输入星期数,显示今天的减肥活动

import java.util.Scanner;

public class DebugTest01 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.print("Enter(输入星期数) :");
        //创建Scanner对象
        Scanner input = new Scanner(System.in);
        //定义变量
        int weekDay = input.nextInt();

        switch(weekDay){
            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("你输入的星期数有误");
        }
    }
}

导包:

(1)手动导包:键盘键入" import java.util.Scanner;"

(2)快捷键导包:Alt + Enter

 (3)自动导包:键盘键入"Sc"就出现以下情况,然后按下"Enter"键

2.逢七过

题:控制台打印1~100之间满足逢七必过的规则的数据
(1)1~100,用for循环获取数据
(2)判断满足逢七必过的规则的数据:包含7的数(个位数是7,十位数是7的数),能被7整除

//逢七过

import java.util.Scanner;

public class DebugTest01 {

    public static void main(String[] args) {

        /*从控制台打印1~100之间满足逢七必过的规则的数据
        1~100,用for循环获取数据
        判断满足逢七必过的规则的数据:包含7的数(个位数是7,十位数是7的数),能被7整除
         */

        /*
        for(int number=1;number<=100;number++){
            if(number % 7 == 0 || number % 10==7 || number/10%10==7){
                System.out.println(number + " pass");
            }
        }
         */
        for(int number=1;number<=100;number++){
            if(number % 7 == 0){
                System.out.println(number + " pass1");
            }
            else if(number % 10==7){
                System.out.println(number + " pass2");
            }
            else if(number/10%10==7){
                System.out.println(number + " pass3");
            }
        }
    }
}

3. 不死神兔

public class DebugTest01 {

    public static void main(String[] args) {
    /*
    题目:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第3个月后每个月又生一对兔子,假如兔子不死,问第20个月的兔子对数为多少?
    1月:1对
    2月:1对
    3月:2对= 1 + 1
    4月:3对 = 1 + 2
    5月:5对 = 2 + 3
    6月:8对 = 3 + 5
    7月:13对 = 5 + 8
    .....
    数组模拟:
    arr[0] = 1;
    arr[1] = 1;
    arr[2] = arr[0] + arr[1];
    arr[3] = arr[1] + arr[2];
    arr[4] = arr[2] + arr[3];
    arr[5] = arr[3] + arr[4];
    ......
    arr[i] = arr[i-2] + arr[i-1];
     */
        int[] arr = new int[20];
        arr[0] = 1;
        arr[1] = 1;
        for(int i=2; i<arr.length; i++){
            arr[i] = arr[i-2] + arr[i-1];
        }
        System.out.println(arr[19]);
    }
}

4.百钱百鸡

public class DebugTest01 {

    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);
                }
            }
        }
    }
}

5.数组元素求和

public class DebugTest01 {

    public static void main(String[] args) {
       /*
       需求:有这样的一个数组,元素是{68,27,95,88,171,996,51,210}。求出该数组中满足要求的元素和,要求是:求和的元素个位和十位都不能是7,并且只能是偶数
        */
        int[] arr = {68,27,95,88,171,996,51,210};
        int sum = 0;
        for(int i=0;i<arr.length;i++){
            if(arr[i] % 2 == 0 && arr[i]%10 != 7 && arr[i] /10 % 10 != 7){
                sum += arr[i];
            }
        }
        System.out.println("sum:" + sum);

    }
}

6.数组内容相同

public class DebugTest01 {

    public static void main(String[] args) {
       /*
       需求:设计一个方法,用于比较两个数组的内容是否相同
    思路:
    (1)定义两个数组,分别使用静态初始化完成数组元素的初始化
    (2)定义一个方法,用于比较两个数组的内容是否相同
        返回值类型:boolean
        参数:int[] arr, int[] arr2
    (3)比较两个数组的内容是否相同,按照下面的步 聚实现就可以了
        首先比较数组长度,如果长度不相同,数组内容肯定不相同,返回false
        其次遍历,比较两个数组中的每一个元素,只要有元素不相同,返回false
        最后循环遍历结束后,返回true
        */
        int[] arr = {11,22,32,44,55};
        int[] arr2 = {11,22,33,44,55};
        //调用方法,用变量接收boolean
        boolean flag = compareArray(arr,arr2);
        System.out.println(flag);

    }
    public static boolean compareArray(int[] arr,int[] arr2){
        //首先比较数组长度,如果两个数组的长度不相同,数组内容肯定不相同
        if(arr.length != arr2.length){
            return false;
        }
        //其次遍历,比较数组中的每一个元素,只要元素不相同,返回false
        for(int i=0;i<arr.length;i++){
            if(arr[i] != arr2[i]){
                return false;
            }
        }
        return true;
    }


}

7. 查找

(1)法1 :直接写入

import java.util.Scanner;

public class DebugTest01 {

    public static void main(String[] args) {
       /*
       需求:已知一个数组arr = {19, 28,37,46,50};键盘录入一个数据,查找该数据在数组中的索引,并在控制台输出找到的索引1值。
        */

        int[] arr = {19,28,37,46,50};
        //初始化索引变量
        int index = -1;
        System.out.println("Enter the number:");
        //创建Scanner对象
        Scanner input = new Scanner(System.in);
        int number = input.nextInt();
        for(int i=0;i<arr.length;i++){
            if(number == arr[i]){
                index = i;
                break;
            }
        }

        System.out.println("index: " + index);
    }
    
}

(2)法2 : 调用方法 (查找指定的数据在数组中的索引)

import java.util.Scanner;

public class DebugTest01 {

    public static void main(String[] args) {
       /*
       需求:已知一个数组arr = {19, 28,37,46,50};键盘录入一个数据,查找该数据在数组中的索引,并在控制台输出找到的索引1值。
        */

        int[] arr = {19,28,37,46,50};

        System.out.println("Enter the number:");
        //创建Scanner对象
        Scanner input = new Scanner(System.in);
        int number1 = input.nextInt();
        //定义index1接收getIndex方法中的下标值index
        int index1 = getIndex(arr,number1);
        System.out.println("index: " + index1);
    }

    /*定义一个方法:查找指定的数据在数组中的索引
    返回值类型:int
    参数:int[] arr
     */
    public static int getIndex(int[] arr,int number){
        int index = -1; //初始化下标值index必须在数组下标值的范围之外

        for(int i=0;i<arr.length;i++){
            if(number == arr[i]){
                index = i;
                break;
            }
        }
        return index;
    }


}

8. 反转

//反转
public class DebugTest01 {

    public static void main(String[] args) {
       /*
       反转需求:
       已知一个数组arr= {19,28,37,46,50}; 用程序实现把数组中的元素值交换,
       交换后的数组arr= {50,46,37,28,19}; 并在控制台输出交换后的数组元素。
        */
        //定义一个数组,静态初始化数组
        int[] arr= {19,28,37,46,50};
        /*
    反转数组中的元素 法1:
        //循环遍历数组,初始化语句定义2个索引变量,判断条件是开始索引小于结束索引
        for(int start=0,end=arr.length-1;start<=end;start++,end--){
            //变量交换(首尾交换)
            int temp = arr[start];
            arr[start] = arr[end];
            arr[end] = temp;
        }
         */
       //调用方法:反转数组中的元素
        reverse(arr);

        //调用方法:遍历数组
        printArray(arr);
    }
    /*
    反转数组中的元素  法2:
        2个明确:
        返回类型:void
        参数:int[] arr
     */
    public static void reverse(int[] arr){
        //循环遍历数组,初始化语句定义2个索引变量,判断条件是开始索引小于结束索引
        for(int start=0,end=arr.length-1;start<=end;start++,end--){
            //变量交换(首尾交换)
            int temp = arr[start];
            arr[start] = arr[end];
            arr[end] = temp;
        }
    }


    /*
    打印交换后的数组:
        两个明确:
        返回类型:void
        参数:int[] arr
     */
        public static void printArray(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("]");

        }


}

 6.评委打分

//评委打分

import java.util.Scanner;

public class DebugTest01 {

    public static void main(String[] args) {
       /*
      需求:在编程竞赛中,有6个评委为参赛的选手打分,分数为0-100的整数分。选手的最后得分为:去掉一个最高分和一个最低分后 的4个评委平均值(不考虑小数部分)。
      思路:
        ①定义一个数组,用动态初始化完成数组元素的初始化,长度为6
        ② 键盘录入评委分数
        ③由于是6个评委打分,所以,接收评委分数的操作,用循环改进
        ④ 定义方法实现获取数组中的最高分(数组最大值),调用方法
        ⑤ 定义方法实现获取数组中的最低分(数组最小值),调用方法
        ⑥定义方法实现获取数组中的所有元素的和(数组元素求和),调用方法
        ⑦按照计算规则进行计算得到平均分
        ⑧输出平均分
        */
        //①定义一个数组,用动态初始化完成数组元素的初始化,长度为6
        int[] arr = new int[6];
        //② 键盘录入评委分数
        //③由于是6个评委打分,所以,接收评委分数的操作,用循环改进
        for(int i=0; i<arr.length;i++){
            //创建Scanner对象
            Scanner input = new Scanner(System.in);
            System.out.print("请输入第" + (i+1) +"个评委的打分 :");
            arr[i] = input.nextInt();

        }
        //④ 定义方法实现获取数组中的最高分(数组最大值),调用方法
        int max = getMax(arr);
        //⑤ 定义方法实现获取数组中的最低分(数组最小值),调用方法
        int min = getMin(arr);
        //⑥定义方法实现获取数组中的所有元素的和(数组元素求和),调用方法
        int sum = getSum(arr);

        //⑦按照计算规则进行计算得到平均分(去掉最高分和最低分)
        int average = (sum - max - min)/(arr.length-2);
        //⑧输出平均分
        System.out.println("选手的最终得分(平均分)是:" + average);
        }
        /*
            ④ 定义方法实现获取数组中的最高分(数组最大值),调用方法
            2个明确:
            返回值:int
            参数:int[] arr
         */
        public static int getMax(int[] arr){
            int max=arr[0];
            for(int i=1;i<arr.length;i++){
                if(arr[i]>max){
                    max = arr[i];
                }
            }
            return max;
        }

        /*
            ⑤ 定义方法实现获取数组中的最低分(数组最小值),调用方法
            2个明确:
            返回值:int
            参数:int[] arr
         */
        public static int getMin(int[] arr){
            int min=arr[0];
            for(int i=1;i<arr.length;i++){
                if(arr[i]<min){
                    min = arr[i];
                }
            }
            return min;
        }
        /*
        ⑥定义方法实现获取数组中的所有元素的和(数组元素求和),调用方法
        2个明确:
        返回值类型:int
        参数:int[] arr
         */
    public static int getSum(int[] arr){
        int sum = 0;
        for(int i=0; i<arr.length; i++) {
            sum += arr[i];
        }
        return sum;
    }


}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值