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

题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下 的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。

public static void solution11() 

	int i;

	int x = 1;

for (i = 9; i >= 1; i--) 
	
	x = (x + 1) * 2;



	System.out.println("第一天共摘了桃子为:" + x);




设计程序打印如下图案

*

***

*****

*******

*********
public static void solution12() 
		for (int i = 1; i <= 5; i++) 
			for (int j = 1; j <= 2 * i - 1; j++) 
				System.out.print("*");
			
			System.out.println();
		
	

题目:求1+2!+3!+…+5!的和

public static void solution13() 
		int sum = 0;
		for (int i = 1; i < 6; i++) 
			sum += factorial(i);
		
		System.out.println(sum);
	

public static int factorial(int n) 
		if (n == 1) 
			return 1;
		
		return n * factorial(n - 1);
	

题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?

public static void solution14() 
		int age=10;
		for(int i=1;i<5;i++) 
			age+=2;
		
		System.out.println(age);
	

二维数组 存储 三名同学 三门成绩 计算三个同学平均成绩 三门课的平均分

public static void main(String[] args) 

		Student[] students =  new Student(1, "小红"), new Student(2, "小庄"), new Student(3, "小康") ;
		String[] name =  students[0].getName(), students[2].getName(), students[1].getName() ;
		String[] subject =  "语文", "数学", "英语" ;
		int[][] score =   80, 75, 92 ,  61, 65, 71 ,  59, 63, 70  ;
		 TestMatrix(subject, name, score);
	


public static void TestMatrix(String[] subject, String[] name, int arr[][]) 
		int sumScore = 0;
		int sumSub = 0;
		int j = 0;
		int index = 0;
		while (j < 3) 
			for (int i = 0; i < arr.length; i++) 
				sumScore += arr[j][i];
			
			System.out.println(name[j] + "同学的总分为-->" + sumScore + ",平均分为" + sumScore / 3);
			j++;
			sumScore JAVA小白 编程练习500题 超详细!!!带答案!!!持续更新中~

炫“库”行动☀️人大金仓数据库管理系统☀️ - SQL&JDBC&整合MyBatis框架&登录注册Demo实现(持续更新中......)

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

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

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

Python练习题 023:比后面的人大2岁