Java练习题(持续更新)

Posted 康小庄

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java练习题(持续更新)相关的知识,希望对你有一定的参考价值。

编程计算某年某月有几天。其中判别闰年的条件是: 能被4整除但不能被100整除的年是闰年,能被400整除的年也是闰年。(要求年月值是通过输入产生)。

public static void solution1() 
		System.out.println("输入一个年月,格式如下 2001.8");

		Scanner scanner = new Scanner(System.in);
		String string = scanner.nextLine();
		String[] split = string.split("\\\\.");

		if (judgeYear(Integer.parseInt(split[0]))) 
			System.out.println(Integer.parseInt(split[0]) + "年是闰年");
			if (Integer.parseInt(split[1]) == 2) 
				System.out.println(Integer.parseInt(split[1]) + "月" + judgeMonth(Integer.parseInt(split[1])) + 1 + "天");
			
		 else 
			System.out.println(Integer.parseInt(split[0]) + "不是闰年");
			System.out.println(Integer.parseInt(split[1]) + "月" + judgeMonth(Integer.parseInt(split[1])) + "天");
		
	

	// 编程计算某年某月有几天。其中判别闰年的条件是: 能被4整除但不能被100整除的年是闰年,能被400整除的年也是闰年。(要求年月值是通过输入产生)
	public static boolean judgeYear(int year) 
		return year % 4 == 0 && year % 100 != 0 || year % 400 == 0 ? true : false;
	

	public static int judgeMonth(int month) 
		HashMap<Integer, Integer> map = new HashMap<>();
		map.put(1, 31);
		map.put(2, 28);
		map.put(3, 31);
		map.put(4, 30);
		map.put(5, 31);
		map.put(6, 30);
		map.put(7, 31);
		map.put(8, 31);
		map.put(9, 30);
		map.put(10, 31);
		map.put(11, 30);
		map.put(12, 31);
		return map.get(month);
	

输入一个成绩,根据输入的成绩判断成绩的等级,比如输入成绩95,输出结果为:你输入的成绩为“优”。

public static void solution2() 
		Scanner scanner = new Scanner(System.in);
		System.out.println("输入一个成绩");
		int grade = scanner.nextInt();
		if (grade > 100 || grade < 0) 
			System.out.println("输入成绩有误");
		
		if (grade > 90 && grade < 100) 
			System.out.println("输入成绩为优秀");
		 else if (grade >= 60 && grade < 90) 
			System.out.println("输入成绩为良好");
		 else 
			System.out.println("输入成绩为不及格");
		
	

将100以内能被3整除的数输出来

// 将100以内能被3整除的数输出来
	public static void solution3() 
		for (int i = 0; i < 101; i++) 
			if (i % 3 == 0) 
				System.out.println(i);
			
		
	

设计程序完成向屏幕打印1000以内的素数和。

/**
	 * 
	 * @Title: solution5
	 * @Description: 打印1000以内的素数
	 * @author: KangXiaoZhuang
	 * @param:
	 * @return: void
	 * @throws
	 */
	public static void solution5() 
		for (int i = 1; i <= 1000; i++) 
			int count = 0;
			for (int j = 1; j <= i; j++) 
				if (i % j == 0) 
					count++;
				
			
			if (count == 2) 
				System.out.println(i);
			
		
	

设计程序打印三位数的水仙花数。

/**
	 * 
	 * @Title: solution6
	 * @Description: 三位数的水仙花数
	 * @author: KangXiaoZhuang
	 * @param:
	 * @return: void
	 * @throws
	 */
	public static void solution6() 
		for (int i = 100; i <= 999; i++) 
			// 拆分三位数字的每个位上的数
			int first = i / 100;
			int second = i / 10 % 10;
			int third = i % 10;
			if (first * first * first + second * second * second + third * third * third == i) 
				System.out.print(i + " ");
			
		
	

初始化一个无序数组,然后设计程序完成对数组的冒泡排序,并对排序前后的数组进行打印。

/**
	 * 
	 * @Title: bubbleSort
	 * @Description: 冒泡排序
	 * @author: KangXiaoZhuang
	 * @param: @param arr
	 * @return: void
	 * @throws
	 */
	public static void bubbleSort(int[] arr) 
		int temp = 0;
		for (int i = 0; i < arr.length - 1; i++) 
			for (int j = 0; j < arr.length - 1 - i; j++) 
				// 如果前面的数比后面的数大 交换
				if (arr[j] > arr[j + 1]) 
					temp = arr[j];
					arr[j] = arr[j + 1];
					arr[j + 1] = temp;
				
			
		
		System.out.println(Arrays.toString(arr));
	

题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? //这是一个菲波拉契数列问题

/**
	 * 
	 * @Title: f
	 * @Description: 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?//这是一个菲波拉契数列问题
	 * @author: KangXiaoZhuang
	 * @param: @param  n
	 * @param: @return
	 * @return: int
	 * @throws
	 */
	public static int f(int n) 
		if (n != 1 && n != 2) 
			if (n != 3) 
				return f(n - 1) + f(n - 2);
			 else 
				return 2;
			
		 else 
			return 1;
		
	

题目:判断101-200之间有多少个素数,并输出所有素数。 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。

/**
	 * @Title: solution07
	 * @Description:程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。
	 * @author: KangXiaoZhuang
	 * @param:
	 * @return: void
	 * @throws
	 */
	public static void solution07() 
		Scanner scanner = new Scanner(System.in);
		int num = scanner.nextInt();
		boolean isPrime = true;
		for (int i = 2; i < Math.sqrt(num); i++) 
			if (num % i == 0) 
				isPrime = false;
				break;
			
		
		if (isPrime == true) 
			System.out.println(num + "是素数");
		 else 
			System.out.println(num + "不是素数");
		
	

题目:利用条件运算符的嵌套来完成此题:学习成绩> =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。

/**
	 * 
	 * @Title: solution08
	 * @Description: 题目:利用条件运算符的嵌套来完成此题:学习成绩> =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。
	 * @author: KangXiaoZhuang
	 * @param:
	 * @return: void
	 * @throws
	 */
	public static void solution08() 
		System.out.println("输入一个成绩");
		Scanner scanner = new Scanner(System.in);
		int grade = scanner.nextInt();
		System.out.println(grade >= 90 ? "A" : grade >= 60 ? "B" : "C");
		if (grade >= 90) 
			System.out.println("A");
		 else if (grade <= 89 && grade >= 60) 
			System.out.println("B");
		 else 
			System.out.println("C");
		
	

题目:求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。

/**
	 * 
	 * @Title: solution09
	 * @Description: 题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
	 * @author: KangXiaoZhuang
	 * @param:
	 * @return: void
	 * @throws
	 */
	public static void solution09() 
		System.out.println("请输入原始的数字");
		Scanner scanner = new Scanner(System.in);
		int a = scanner.nextInt();
		System.out.println("请输入要相加的个数");
		int n = scanner.nextInt();
		int temp = 0;
		int sum = 0;
		for (int i = 0; i < n; i++) 
			temp += a * (int) Math.pow(10, i);
			sum += temp;
		
		System.out.print(sum);
	

以上是关于Java练习题(持续更新)的主要内容,如果未能解决你的问题,请参考以下文章

JAVA小白 编程练习500题 超详细!!!带答案!!!持续更新中~

JAVA小白 编程练习500题2帖 超详细!!!带答案!!!持续更新中~

JAVA小白 编程练习500题 超详细!!!带答案!!!持续更新中~

基础算法练习(持续更新)

Python练习题(持续更新中)

Python练习题–持续更新