Java—题目练习

本文通过六个案例介绍了Java编程中的数组操作和逻辑判断应用,包括减肥计划的if和switch实现,不死神兔的斐波那契数列计算,百钱百鸡问题的解法,数组内容比较,数据查找以及数组元素反转。这些案例覆盖了基本的逻辑控制和数组处理技巧,适合初学者巩固基础知识。
摘要由CSDN通过智能技术生成

目录

案例:减肥计划

1、if版

2、switch版

案例:不死神兔

案例:百钱百鸡

案例:数组内容相同

案例:查找

案例:反转


案例:减肥计划

需求:输入星期数,显示今天的减肥活动
周一:跑步周二:游泳周三:慢走
周四:动感单车周五:拳击周六:爬山
周日:好好吃一顿

1、if版

package Java.test;
import java.util.Scanner;
public class test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个星期数:");
        int week = sc.nextInt();
        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 if (week == 7) {
            System.out.println("好好吃一顿");
        }
    }
}

2、switch版

package Java.test;

import java.util.Scanner;

public class test {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个星期数:");
        int week = sc.nextInt();
        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("你输入的星期数有误");
        }

    }
}

案例:不死神兔

需求:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子
假如兔子都不死,问第二十个月的兔子对数为多少?

找规律:
第一个月:1

第二个月:1

第三个月:2

第四个月:3

第五个月:5

数据连起来:1,1,2,3,5...

规律:
从第三个数据开始,每一个数据是前两个数据之和。第1个,第2个数据是已知的。

package Java.test;

public class test {
    public static void main(String[] args) {
        int[] arr = new int[30];
        arr[0]=1;
        arr[1]=1;
        for(int i=2;i<=20;i++){
            arr[i]=arr[i-1]+arr[i-2];
        }
        System.out.println(arr[19]);
    }
}

案例:百钱百鸡

需求:我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一
百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?

分析:
假设鸡翁x只,鸡母y只,鸡雏z只,则下面的式子是成立的
x+y+z= 100;
5*x + 3*y + z/3 = 100;

思路:
①第1层循环,用于表示鸡翁的范围,初始化表达式的变量定义为x=0,判断条件是x<=20
第2层循环,用于表示鸡母的范围,初始化表达式的变量定义为y=0,判断条件是y<=33③这个时候,用于表示鸡雏的变量z=100-x-y
④判断表达式z%3==0和表达式5*x+3*y+z/3=100是否同时成立,如果成立,输出对应的x,y,z的值
就是对应的鸡翁,鸡母,鸡雏的值

package Java.test;

public class test {
    public static void main(String[] args) {
        for(int i=0;i<=20;i++){
            for(int j=0;j<=33;j++){
                int k=100-i-j;
                if(k%3==0&&5*i+3*j+k/3==100)
                    System.out.println(i+","+j+","+k);
            }
        }
    }
}

案例:数组内容相同

需求:设计一个方法,用于比较两个数组的内容是否相同

思路:
1、定义两个数组,分别使用静态初始化完成数组元素的初始化
2、定义一个方法,用于比较两个数组的内容是否相同
        返回值类型:boolean

        参数:int[] arr,int[] arr2
3、比较两个数组的内容是否相同,按照下面的步骤实现就可以了
        首先比较数组长度,如果长度不相同,数组内容肯定不相同,返回false

        其次遍历,比较两个数组中的每一个元素,只要有元素不相同,返回false

        最后循环遍历结束后,返回true

package Java.test;

public class test {
    public static void main(String[] args) {
       int[] arr={1,2,3,4,5};
       int[] arr2={1,2,3,4,5};
       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 i=0;i<arr.length;i++){
            if(arr[i]!=arr2[i])
                return false;
        }
        return true;
    }
}

案例:查找

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

分析:
键盘录入一个数据后,让这个数据和数组中的每一个元素进行比较,如果数据值相等,返回该数据值对应的索引即可

但是,假如录入了一个数组中不存在的数据,这个时候,就没有任何内容输出了,很明显是有问题的,在实际开发中,如果对应的索引不存在,我们一般都是返回一个负数,而且经常用-1来表示。

package Java.test;

import java.util.Scanner;

public class test {
    public static void main(String[] args) {
        int[] arr={19,28,37,46,50};
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入要查找的数据:");
        int x=sc.nextInt();
        int flag=-1;
        for(int i=0;i<arr.length;i++){
            if(arr[i]==x){
                flag=i;
                break;
            }
        }
        System.out.println(flag);
    }
  
}

案例:反转

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

package Java.test;

public class test {
    public static void main(String[] args) {
        int[] arr={19,28,37,46,50};
        for(int i=0,j=arr.length-1;i<arr.length/2;i++,j--){
            int flag;
            flag=arr[i];
            arr[i]=arr[j];
            arr[j]=flag;
        }
        for(int i=0;i<arr.length;i++){
            System.out.println(arr[i]);
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值