Java基础-方法练习题

Java基础-方法练习题

习题一 用方法输出数组中的最值和平均值

public class ArrayOperate {

	/*
		1.定义一个无返回值的方法,传入一个int类型数组,求出该数组中的最大值、最小值和平均值并输出。
		2.在main方法中定义一个int类型的数组{ 8, 3, 6, 9, 14 },调用上述方法进行测试。

	 */
	public static void main(String[] args) {
		int[] arr = {8, 3, 6, 9, 14};
		arrayOperate(arr);
	}

	private static void arrayOperate(int[] arr) {

		int max = arr[0];
		int min = arr[0];
		int sum = 0;
		for (int i = 0; i <= arr.length - 1; i++) {
			max = Math.max(max, arr[i]);
			sum += arr[i];
		}
		for (int i = 1; i < arr.length; i++) {
			min = Math.min(min, arr[i]);
		}

		System.out.println("数组中的最大值为:" + max);
		System.out.println("数组中的最小值为:" + min);
		System.out.println("数组内所有元素的平均值为:" + (sum / arr.length));
	}

}

练习二 获取数组平均值并统计数组中高于平均数的值个数

public class ArrayGetAvg {

	/*
		(1)	定义方法public static int getAvg(int[] arr),获取数组中的平均数并返回;
		(2)	在main方法内,定义长度为10的int数组,使用随机数赋值,并调用getAvg方法获取平均分。然后遍历数组,统计高于平均分的分数有多少个。
		打印结果:高于平均分:80 的个数有 5 个。

	 */
	public static void main(String[] args) {
		Random rd = new Random();
		int[] arr = new int[10];
		for (int i = 0; i < arr.length; i++) {
			arr[i] = rd.nextInt(100);
		}

		int avg = getAvg(arr);

		int count = 0;
		for (int i = 0; i < arr.length; i++) {
			if (arr[i] > avg) {
				count++;
			}

		}
			System.out.printf("高于平均分%d的个数有%d个",avg, count);
	}

	private static int getAvg(int[] arr) {

		int sum = 0;
		for (int i = 0; i < arr.length; i++) {
			sum += arr[i];
		}

		return sum / arr.length;
	}
}

习题三 获取水仙花数个数并打印所有水仙花数

public class GetDaffodilNum {

	/*
		(1)	定义方法public static boolean isSXH(int num),功能:判断数字num是否是水仙花数,如果是返回true,如果不是返回false。
		(2)	定义方法public static int getCount(),功能:借助isSXH方法,获取100到999以内水仙花个数,
		(3)	定义方法public static int[] getArr(int count),根据参数值创建int数组,借助isSXH方法,获取100到999以内水仙花数,存入到数组并返回。
		(4)	在main方法中调用getCount方法,获取水仙花的个数,然后调用getArr方法,将水仙花的个数作为参数传递,获取到返回值后遍历打印数组。

	 */
	public static void main(String[] args) {
		int count = getCount();
		int[] arr = getArr(count);
		System.out.println("三位水仙花数有:");
		printArray(arr);

	}

	//返回值类型为boolean,参数类型为 int
	//判断参数是否为水仙花数
	private static boolean isDaffodil(int num) {

		int singleDigit = num % 10;
		int tensDigit = num / 10 % 10;
		int hundredDigit = num / 100;

		return (singleDigit * singleDigit * singleDigit + tensDigit * tensDigit * tensDigit + hundredDigit * hundredDigit * hundredDigit == num);

	}

	//返回值类型为int, 没有参数
	//获取水仙花数个数
	private static int getCount() {

		int count = 0;
		for (int i = 100; i < 1000; i++) {
			if (isDaffodil(i)) {
				count++;
			}
		}
		return count;
	}

	//返回值类型为int[], 参数为int
	//根据水仙花数个数初始化一个数组,用于存储所有的水仙花数
	private static int[] getArr(int count) {

		int[] arr = new int[count];

		for (int i = 100; i < 1000; i++) {
			if (isDaffodil(i)) {
				arr[--count] = i;
			}
		}
		return arr;
	}

	//返回值类型为空,参数为int[]
	//遍历数组,打印所有元素
	private static void printArray(int[] arr) {
		for (int value : arr) {
			System.out.println(value);
		}
	}
}

习题四 获取数组中指定元素的索引值

public class ArrayGetIndex {

	/*
		18、现有整数数组包含如下元素:{ 11 , 22 , 33 , 22 , 11 },
		获取一个键盘录入的整数num,判断num在数组中最后出现的角标位置并在
		控制台打印输出,如元素在数组中不存在,也输出对应提示信息,
	 */
	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);
		System.out.println("请输入需要查询的数字:");
		int i = sc.nextInt();
		int[] arr = {11, 22, 33, 22, 11};

		int a = getIndex(arr,i);
		//根据索引值给出对应提示
		if (a != -1) {
			System.out.println(i + "最后出现位置的索引是:" + a);
		} else {
			System.out.println("你要查找的数字不在数组内");
		}
	}

	private static int getIndex(int[] arr,int i) {

		int index = -1; //初始化index为-1,代表无查询结果
		for (int j = 0; j < arr.length; j++) {
			if (arr[j] == i) {
				index = j;	//获取i最后出现位置的索引值
			}
		}

		return index;
	}
}

习题五 九九乘法表

public class MultiTable {

	/*
		打印输出九九乘法表
	 */
	public static void main(String[] args) {
		multiTable();
	}

	private static void multiTable() {
		for (int i = 1; i <= 9; i++) {

			for (int j = 1; j <= i; j++) {
				System.out.printf("%d * %d = %d\t", j, i, (i * j));
			}
			System.out.println();
		}
	}
}

习题六 升级版猜数游戏

public class LeveledNumGame {

	/*
		假如将我们前面学过的猜数字游戏难度等级划分为3种,
		1级难度,随机数的范围是1-10之间,
		2级难度,随机数的范围是1-50之间,
		3级难度,随机数的范围是1-100之间,
		请使用代码的形式完成将猜数字游戏封装成一个方法,
		并在main方法中模拟用户的行为,通过键盘输入一个难度等级,
		实现用户可以玩不同难度的游戏
	 */

	private static Scanner sc = new Scanner(System.in);

	public static void main(String[] args) {

		leveledGame();
	}

	//返回值类型为void
	private static void leveledGame() {

		System.out.println("请选择游戏等级:1.简单(1~10) 2.中等 (1~50) 3.困难 (1~100):");
		int i = sc.nextInt();

		switch (i) {
			case 1:
				numberGame(10);
				break;

			case 2:
				numberGame(50);
				break;

			case 3:
				numberGame(100);
				break;

			default:
				System.out.println("输入有误");
				break;
		}

	}

	private static void numberGame(int num) {


		Random rd = new Random();
		int seed;
		seed = rd.nextInt(num) + 1;

		while (true) {

			System.out.printf("请输入你要猜的数字(1~%d):\n",num);
			int guess = sc.nextInt();

			if (guess >= 1 && guess <= num) {

				if (guess > seed) {
					System.out.printf("您猜的数字%d大了,再猜一次吧。\n", guess);
				} else if (guess < seed) {
					System.out.printf("您猜的数字%d小了,再猜一次吧。\n", guess);
				} else {
					System.out.println("恭喜你猜对了!");
					break;
				}
			} else {
				System.out.printf("输入有误,请输入1~%d之间的数字\n", num);
			}

		}
	}
}

习题七 获取班级成绩中大于90分的人数和具体分数

public class GetScore {

	/*
		假如你的班主任老师给你安排了一个任务,让你统计出班级本次考试中90分以上的学生,
		并将这些学生的分数整理成一份新的成绩表交给他;请使用你学过的技术,模拟上述的场景;

		已知条件:
		班级所有学生分数:[59,88,99,89,96,85,100,66]
	 */
	public static void main(String[] args) {

		int[] arr = {59, 88, 99, 89, 96, 85, 100, 66};
		int[] score = getScore(arr);
		System.out.printf("大于90分的同学共有%d个,分别是: ", score.length);
		for (int i = 0; i < score.length; i++) {
				System.out.print(score[i] + " ");
		}

	}

	private static int[] getScore(int[] arr) {

		int count = 0;
		for (int item : arr) {	//统计大于90分的人数
			if (item >= 90) {
				count++;
			}
		}

		int[] score = new int[count];
		for (int value : arr) {	//将大于90分的分数放入score数组中
			if (value >= 90) {
				score[--count] = value;    //先自减,后将arr[i]赋值给score[count-1]
			}
		}
		return score;	
	}

}

你可能感兴趣的:(Java基础)