11道简单的JAVA初学者练习题

1,编写Java程序,从键盘上输入10个数,赋值给一个长度为10的数组,利用冒泡排序法为数组排序。

import java.util.Scanner;
public class Demo1 {

	public static void main(String[] args) {
		int[] a=new int[10];
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入10个数");
		for(int i=0;i<a.length;i++) {
			System.out.println("请输入第"+(i+1)+"个数");
			a[i]=sc.nextInt();
		}
		for(int i=0;i<a.length-1;i++) {
			for(int j=0;j<a.length-1-i;j++) {
				if(a[j]>a[j+1]) {
					int temp=a[j];
					a[j]=a[j+1];
					a[j+1]=temp;
				}
			}
		}
		System.out.println("排序后数列为");
		for(int i=0;i<a.length;i++) {
			System.out.print(a[i]+"\t");
		}
	}

}

2,判断101-200之间有多少个素数,并输出所有素数。

public class Demo2 {

	public static void main(String[] args) {
		int count=0;
		int[] a=new int[50];
		for(int i=101;i<=200;i++) {
			if(isPrime(i)) {
				a[count]=i;
				count++;
			}
		}
		System.out.println("101-200之间共有"+count+"个素数");
		System.out.println("它们分别是:");
		for(int i=0;i<count;i++) {
			System.out.print(a[i]+"\t");
		}

	}
	public static boolean isPrime(int num) {
		boolean isprime=true;
		int len=num/2;
		for(int i=2;i<len;i++) {
			if(num%i==0) {
				isprime=false;
				break;
			}
		}
		if(num==2) {
			return true;
		}
		return isprime;
	}
}

3,编写程序,求1!+2!+3!+…n!的和,n的值由键盘输入。

import java.util.Scanner;
public class Demo3 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("求1!+2!+3!+...n!的和,请输入n的值");
		int n=sc.nextInt();
		int sum=0;
		for(int i=1;i<=n;i++) {
			sum+=Fac(i);		
		}
		System.out.println("结果为"+sum);
	}
	public static int Fac(int num) {
		int mul=1;
		for(int i=num;i>0;i--) {
			mul*=i;
		}
		return mul;
	}

}

4,编写程序,将一个偶数分解成两个素数的和并输出。

import java.util.Scanner;
public class Demo4 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一个正偶数");
		int n;
		while(true) {
			n = sc.nextInt();
			if(n<=0||n%2!=0) {
				System.out.println("输入的数不是正偶数,请重新输入");
			}
			else if(n==2){
				System.out.println("2不能拆分");
			}
			else {
				break;
			}
		}

		for(int i=2;i<n/2;i++) {
			 if(isPrime(i)&&isPrime(n-i)) {
				 System.out.println(n+"="+i+"+"+(n-i));
				 break;
			 }
		}
	}
	public static boolean isPrime(int num) {
		boolean isprime=true;
		int len=num/2;
		for(int i=2;i<len;i++) {
			if(num%i==0) {
				isprime=false;
				break;
			}
		}
		if(num==2) {
			return true;
		}
		return isprime;
	}
}

5,编写程序,求出m和n的最大公约数和最小公倍数。

import java.util.Scanner;
public class Demo5 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int m,n;
		System.out.println("请输入两个数");
		System.out.println("请输入第一个数");
		m=sc.nextInt();
		System.out.println("请输入第二个数");
		n=sc.nextInt();
		System.out.println("最大公约数为:"+gcd(m,n));
		System.out.println("最小公倍数为:"+lcm(m,n));
	}
	public static int gcd(int m,int n) {
		while(m%n!=0) {
			int r = m%n;
			m = n;
			n = r;
		}
		return n;
	}
	public static int lcm(int m,int n) {
		
		return m*n/gcd(m,n);
	}

}

6,定义字符串str1和str2,str1为String类型,str2为StringBuffer类型,并初始化,进行以下操作:
(1)输出两个字符串的长度;
(2)将str1反序输出,例如str1=“today”,则输出"yadot";
(3)将字符串str2向右移动三位输出,例如str2=“todayisgood”,则输出"oodtodayisg"。

public class Demo6 {

	public static void main(String[] args) {
		String str1="today";
		StringBuffer str2 = new StringBuffer("todayisgood");
		System.out.println("str1的长度为"+str1.length());
		System.out.println("str2的长度为"+str2.length());
		System.out.println("str1反序输出为");
		for(int i = str1.length()-1;i>=0;i--) {
			char a = str1.charAt(i);
			System.out.print(a);
		}
		System.out.println("\nstr2向右移动三位输出为:");
		for(int j = 0;j<str2.length();j++) {
			System.out.print(str2.charAt((str2.length()+j-3)%str2.length()));
		}

	}

}

7,编写程序,利用选择法实现数组排序

public class Demo7 {

	public static void main(String[] args) {
		int[] arr={1,3,2,45,65,33,12};
        System.out.println("排序前:");
        for(int num:arr){
            System.out.print(num+" ");
        }        

        for(int i = 0; i < arr.length - 1; i++) {
            int k = i;
            for(int j = k + 1; j < arr.length; j++){
                if(arr[j] < arr[k]){ 
                    k = j;
                }
            }

            if(i != k){
                int temp = arr[i];
                arr[i] = arr[k];
                arr[k] = temp;
            }    
        }
        System.out.println();
        System.out.println("排序后:");
        for(int num:arr){
            System.out.print(num+" ");
        }

	}

}

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

import java.util.Scanner;
public class Demo8 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入一个正整数");
		int m = sc.nextInt();
		int n = 2;
		System.out.print(m+"=");
		while(n<=m) {
			if(n==m) {
				System.out.print(m);
	            break;
			}
			else if(m%n==0) {
				System.out.print(n+"*");
				m/=n;
			}
			else {
				n++;
			}
		}
		

	}

}

9,编写类Animal,该类包含私有属性name、age,公有方法void showInfo()。为Animal类添加构造器和属性访问器。定义主类Demo9,在主方法中实例化Animal类,并且用构造器和属性访问器分别为name和age赋值,调用showInfo方法输出属性信息。

public class Demo9 {

	public static void main(String[] args) {
		Animal a = new Animal("狗");
		a.setAge(5);
		a.showInfo();

	}

}

public class Animal {
	private String name;
	private int age;
	public Animal(String name) {
		this.name=name;
	}
	
	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

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

	public void showInfo(){
		System.out.println("名字是:"+name);
		System.out.println("年龄是:"+age+"岁");
	}
	
}

10,编写类Person,该类包含公有属性name、age,公有方法void showInfo(),方法输出两个属性name和age。编写Person类的子类Student类,该类中定义公有属性StuID,重写父类的showInfo方法,输出三个属性的信息。定义主类,在主方法中实例化Student类和Person类,为每个属性赋值,调用showInfo()方法输出所有属性信息。

public class Demo10 {

	public static void main(String[] args) {
		Person p = new Person("张三",25);
		Student s = new Student("小明 ",18,"12332100");
		p.showInfo();
		s.showInfo();

	}

}

public class Person {
	public Person() {
	}
	public Person(String name, int age) {
		this.name=name;
		this.age=age;
	}
	public String name;
	public int age;
	public void showInfo() {
		System.out.println("名字是:"+name);
		System.out.println("年龄是:"+age+"岁");
	}
}

public class Student extends Person{
	public Student(String name, int age, String StuID) {
		this.name=name;
		this.age=age;
		this.StuID=StuID;
	}
	public String StuID;
	public void showInfo() {
		System.out.println("名字是:"+name);
		System.out.println("年龄是:"+age+"岁");
		System.out.println("ID是:"+StuID);
	}
}

11,编写接口Shape,该接口包含符号常量PI,抽象方法getArea()。定义两个普通类Rectangle和Circle,两个类都要求声明Shape接口。在Rectangle类中复写getArea()方法求矩形面积,在Circle类中复写getArea()方法求圆形面积。在主函数中分别定义两个类的实例,矩形边长输入4和6,圆形输入半径值为3,求各自的面积并输出。

import java.util.Scanner;
public class Demo11 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		double a,b,r;
		System.out.println("请输入矩形的长");
		a=sc.nextDouble();
		System.out.println("请输入矩形的宽");
		b=sc.nextDouble();
		System.out.println("请输入圆形的半径");
		r=sc.nextDouble();
		Rectangle rec = new Rectangle(a,b);
		Circle cir = new Circle(r);
		System.out.println("矩形的面积是"+rec.getArea());
		System.out.println("圆形的面积是"+cir.getArea());
	}

}

public interface Shape {
	public static final double PI=3.14;
	public abstract double getArea();
}

public class Rectangle implements Shape{
	private double a;
	private double b;
	public Rectangle(double a, double b) {
		this.a=a;
		this.b=b;
	}


	public double getArea() {
		return a*b;
	}
}

public class Circle implements Shape{
	double r;

	public Circle(double r) {
		this.r=r;	
	}
	public double getArea() {
		return PI*r*r;
	}
}

你可能感兴趣的:(Java)