Java编程练习

234 阅读2分钟

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

Demo01RabbitBirth.java

package demo01;

import java.util.ArrayList;
import java.util.Arrays;

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

 */
public class Demo01RabbitBirth {
    public static void main(String[] args) {
        ArrayList<Rabbit> list = new ArrayList<>();
        list.add(new Rabbit(1));
        System.out.println("第1个月:总共有"+list.size()+"对兔子");
        for (int i = 2; i < 20; i++) {
            //i表示月份从2~20个月
            for (int i1 = 0; i1 < list.size(); i1++) {
                //更新遍历到的兔子的年龄
                list.get(i1).setAge(i - list.get(i1).getBirthMonth() + 1);
                //每个月都遍历一次兔子列表
                if (list.get(i1).getAge() >= 3){
                    //如果哪一对兔子已经出生到了第3个月就生1对兔子,出生月份为i
                    list.add(new Rabbit(i));
//                    System.out.println("    生了一只兔子,它是第"+ (i1+1)+"对兔子的孩子");

                }
            }
            System.out.println("第"+ i+ "个月:总共有"+Rabbit.num+"对兔子");

        }
    }
}

Rabbit.java

package demo01;

public class Rabbit {
    private int birthMonth;
    private int age = 1;
    private int order = 0;
    static int num = 0;//兔子编号

    public Rabbit() {
        num++;
        this.order = num;
    }

    public Rabbit(int birthMonth){
        this.birthMonth = birthMonth;
        num++;
        this.order = num;
    }

    public int getBirthMonth() {
        return birthMonth;
    }

    public void setBirthMonth(int birthMonth) {
        this.birthMonth = birthMonth;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public int getOrder() {
        return order;
    }

    public void setOrder(int order) {
        this.order = order;
    }
}

问题二:判断101-200之间有多少个素数,并输出所有素数。 素数:只能被1或本身整除的数,如:3,5,7,11,131...

Demo02PrimeNumber.java

package demo02;
/*
问题二:判断101-200之间有多少个素数,并输出所有素数。
素数:只能被1或本身整除的数,如:3,5,7,11,131...
 */
public class Demo02PrimeNumber {
    public static void main(String[] args) {
        for (int i = 101; i < 201; i++) {
            if (isPrime(i)){
                System.out.println(i+"是素数");
            }else{
                System.out.println(i+"不是素数");
            }
        }
    }
    public static boolean isPrime(int num) {
        for (int i = 2; i < num; i++) {
            if (num % i == 0)
                return false;
        }
        return true;
    }
}

问题三:打印出所有的"水仙花数"。 水仙花数:指一个三位数,其各位数字立方和等于该数本身。

Demo03NarcissisticNumber.java

package demo03;
/*
问题三:打印出所有的"水仙花数"。
水仙花数:指一个三位数,其各位数字立方和等于该数本身。
 */
public class Demo03NarcissisticNumber {
    public static void main(String[] args) {
        int ge,shi,bai;
        for (int i = 100; i < 1000; i++) {
            int num = i;
            bai = num / 100;
            num -= bai*100;
            shi = num/10;
            num-= shi*10;
            ge = num;
            if (bai*bai*bai + shi*shi*shi + ge*ge*ge == i ){
                System.out.println(i + "是水仙花数");
            }

        }
    }
}