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