java基础编程题练习

java基础编程题练习

斐波那契数列

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

import java.io.*;
import java.util.Scanner;

public class MyClass {

    public static void main(String[] args) throws IOException{

        Scanner sc = new Scanner(System.in);
        System.out.println("Enter a month:");
        int month = sc.nextInt();

        if(month == 1 || month == 2){
            System.out.println("rabbits = 1");
        }
        else{
            int r1 = 1, r2 = 1, r = 0;
            for(int m = 3; m <= month; m++){
                r = r1 + r2;
                r1 = r2;
                r2 = r;
            }
            System.out.println("Rabbits = " + r);
        }

    }
}

计算素数

题目2:判断101~200之间有多少个素数,并输出所有素数。

public class MyClass {

    public static void main(String[] args){
        int num = 0;
        for(int i = 101; i <= 200; i++){
            int max = (int)Math.ceil(Math.sqrt((double)i));
            boolean isSushu = true;
            for(int j = 2; j <= max; j++){
                if(i%j == 0){
                    isSushu = false;
                    break;
                }
            }
            if(isSushu){
                System.out.print(i + " ");
                num++;
            }
        }
        System.out.println("");
        System.out.println("Number of Sushu is: " + num);
    }
}

分解因数

题目3:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

import java.util.Scanner;

public class MyClass {

    public static void main(String[] args){

        Scanner sc = new Scanner(System.in);
        System.out.println("Enter a positive number:");
        int num = sc.nextInt();

        int temp = num;
        System.out.print(temp + "=");
        if(temp == 1){
            System.out.println("1");
            return;
        }
        while(temp > 1){
            for(int i = 2; i <= temp; i++){
                if(temp%i == 0) {
                    System.out.print(i);
                    temp = temp/i;
                    break;
                }
            }
            if(temp != 1){
                System.out.print("*");
            }
            else{
                System.out.println("");
            }
        }

    }
}

计算最大公因数和最小公倍数

题目4:输入两个正整数m和n,求其最大公约数和最小公倍数。

import java.util.Scanner;

public class MyClass {

    public static void main(String[] args){

        Scanner sc = new Scanner(System.in);
        System.out.println("Enter two positive numbers divided by space:");
        int a = sc.nextInt();
        int b = sc.nextInt();
        
        int tempa = a, tempb = b;
        if(a < b){
            int temp = a;
            a = b;
            b = temp;
        }
        while(b!=0){
            int c = a%b;
            a = b;
            b = c;
        }
        int maxDiv = a;
        int minMul = tempa * tempb / maxDiv;
        System.out.println("Max common divisor:" + maxDiv);
        System.out.println("Min common multiple:" + minMul);

    }
}

自定义类的大小比较

题目5:分别使用comparator接口和comparable接口实现自定义Person类的比较。

import java.util.Arrays;
import java.util.Comparator;

class Person{

    public String name;
    public int age;

    Person(String name, int age){
        this.age = age;
        this.name = name;
    }

    public void prt(){
        System.out.println("age:" + age + ";name:" + name);
    }
}

class PersonComparator implements Comparator<Person>{

    @Override
    public int compare(Person pa, Person pb){
        int comAge = Integer.compare(pa.age, pb.age);
        int comName = pa.name.compareTo(pb.name);
        return comAge == 0 ? comName:comAge;
    }
}

public class MyClass {

    public static void main(String[] args){

        Person[] persons = {
                new Person("Xiaowang", 20),
                new Person("Xiaozhang", 22),
                new Person("Daliu", 20)
        };

        Arrays.sort(persons, new PersonComparator());
        for(Person p : persons){
            p.prt();
        }
    }

}
import java.util.Arrays;

class Person implements Comparable<Person>{

    public String name;
    public int age;

    Person(String name, int age){
        this.age = age;
        this.name = name;
    }

    @Override
    public int compareTo(Person o) {
        int comAge = Integer.compare(age, o.age);
        int comName = name.compareTo(o.name);
        return comAge == 0 ? comName:comAge;
    }

    @Override
    public boolean equals(Object obj) {
        if(!(obj instanceof Person)){
            return false;
        }
        Person p = (Person)obj;
        return name.equals(p.name) && age == p.age;
    }

    @Override
    public int hashCode() {
        return age * 17 + name.hashCode();
    }

    public void prt(){
        System.out.println("age:" + age + ";name:" + name);
    }
}

public class MyClass {

    public static void main(String[] args){

        Person[] persons = {
                new Person("Xiaowang", 20),
                new Person("Xiaozhang", 22),
                new Person("Daliu", 20)
        };

        Arrays.sort(persons);
        for(Person p : persons){
            p.prt();
        }
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值