我的JAVA编程练习题

这篇博客记录了作者在JAVA编程中遇到的一些经典练习题,包括菲波拉契数列、素数判断、水仙花数、质因数分解、三目运算符的应用、最大公约数与最小公倍数的计算、字符统计以及数字字符串相加的问题,涵盖了基础到进阶的JAVA编程技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

记录一下平时练习的JAVA编程题。
/*

  • 1.菲波拉契数列:有一对兔子,从出生后第 3 个月起每个月都生一对兔子
  • 小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死
  • 问每个月的兔子总数为多少?
    */
public class TEST {

	public static void main(String[] args) {
		int N=2,temp_N=2,rabbits;
		System.out.println("菲波拉契数列:有一对兔子,从出生后第 3 个月起每个月都生一对兔子,"
				+ "小兔子长到第三个月后每个月又生一对兔子,"
				+ "假如兔子都不死,问每个月的兔子总数为多少?");
		System.out.println("请输入要知道的月数:");
		Scanner sc = new Scanner(System.in);
		int month = sc.nextInt();
		//第一个月
		if(month == 1)
		System.out.println("第一个月有"+(N)+"只兔子");
		//2
		if(month == 2)
		System.out.println("第二个月有"+(N)+"只兔子");
		//3
		for(int i = 3; i <= month; i++){
			rabbits = N;  // 上上个月的兔子
			N+=temp_N;
			temp_N=rabbits; //存放上个月的兔子总数;
			System.out.println("第"+i+"个月有"+N+"只兔子");
		}	
	}
}

/*

  • 2.判断 101-200 之间有多少个素数,并输出所有素数。
    */
public class TEST2 {
   static int  count=0;
   public static void main(String[] args) {
   	TEST2 test = new TEST2();
   	for(int i=101;i<201;i++){
   		test.isPrime(i);
   	}
   	System.out.println("101-200之间的素数有:"+count+"个");
   	
   
   }
    void isPrime(int x){
   	 boolean prime = true;
   	//if(x == 1 || x==0 || x ==2) System.out.println(x+" "); 
   	for(int i=2;i<x-1;i++){
   		if(x%i==0){
   			prime = false;
   			break;
   		}
   	}
   	if(prime) 
   		count++;
   		System.out.print(x+" ");
   }
}

/*

  • 3.打印出所有水仙花数
  • 水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身
  • (例如:1^3 + 5^3+ 3^3 = 153)
    */
public class TEST3 {

	public static void main(String[] args) {
		TEST3 test = new TEST3();
		//100~999
		for(int i = 100;i<1000;i++){
			test.Narcissistic(i);
		}

	}

	void Narcissistic(int n){
		int unit,ten,hundred;
		unit=n%10;
		ten=n/10%10;
		hundred=n/100%10;
		int sum = (int) (Math.pow(unit, 3)+Math.pow(ten, 3)+Math.pow(hundred, 3));
		if(sum == n)
			System.out.println(n);
	}
}

/*

  • 4.将一个正整数分解质因数。例如:输入 90,打印出 90=233*5
    */
public class TEST4 {

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

}

/*

  • 5.三目运算符:利用条件运算符的嵌套来完成此题:学习成绩> =90 分的同学用 A 表示
  • 60-89 分之间的用 B 表示
  • 60 分以下的用 C 表示。
    */
public class TEST5 {

	public static void main(String[] args) {
		System.out.println("请输入考试成绩:");
		Scanner sc = new Scanner(System.in);
		int score = sc.nextInt();
		char[] Grade = {'A','B','C'};
		//分数小于90,输出B,否则输出A;
		char Score = (score<90)?Grade[1]:Grade[0];
		if(score<60) Score = Grade[2];
		System.out.println("您输入的分数对应等级为:"+Score);
		

	}

}

/*

  • 6.输入两个正整数 m 和 n,求其最大公约数和最小公倍数
    */
public class TEST6 {

	public static void main(String[] args) {
		TEST6 test = new TEST6();
		System.out.println("请输入第一个正整数m:");
		Scanner sc = new Scanner(System.in);
		int m = sc.nextInt();
		System.out.println("请输入第二个正整数n:");
		int n = sc.nextInt();
		System.out.println("最大公约数:"+test.gcd(m, n));
		//两个数的乘积除以最大公约数就是最小公倍数!
		int lcm = m*n/test.gcd(m, n);
		System.out.println("最小公倍数:"+lcm);
		
		
	}
	//公约数
	int gcd(int p,int q){
		if(q==0) return p;
		int r = p % q;
		return gcd(q,r);
	}


}

/*

  • 7.输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数
    */
public class TEST7 {

	public static void main(String[] args) {
		System.out.println("请输入一个字符串:");
		Scanner sc = new Scanner(System.in);
		String string = sc.nextLine();
		TEST7 test = new TEST7();
		test.judge_count(string);
		
	}
	void judge_count(String s){
		int English=0,blank=0,chars=0,nums=0;
		char[] string = s.toCharArray();
		for(int i=0;i<string.length;i++){
			if(string[i]==' ') blank++;
			else if(string[i]>='0' && string[i]<='9') nums++;
			else if(string[i]>='A' && string[i]<='z') English++;
			else chars++;
		}
		System.out.println("其中英文字母有"+English+"个");
		System.out.println("其中数字有"+nums+"个");
		System.out.println("其中其他字符有"+chars+"个");
		System.out.println("其中空格有"+blank+"个");
	}

}

/*

  • 8.求 s=a+aa+aaa+aaaa+aa…a 的值,其中 a 是一个数字。
  • 例如 2+22+222+2222+22222(此时共有 5 个数相加),几个数相加由键盘控制
    */
public class TEST8 {

	public static void main(String[] args) {
		System.out.println("请输入a的值:");
		Scanner sc = new Scanner(System.in);
		int a = sc.nextInt();
		int single = a;
		System.out.println("请输入需要相加的个数:");
		int n =sc.nextInt();	
		int sum=0;
		for (int i = 0; i < n; i++) {
			int temp = 0;
			temp = a + temp;    //先把本次要加的值赋值给temp;
			a =10*a+single;            
			sum = sum + temp;    //把每次的temp相加起来就是要的结果
			 }
		System.out.println("和为:"+sum);
		

		
		
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值