欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java基础-day06

程序员文章站 2022-06-13 12:30:03
...

Debug操作和前5天总结

一、 Debug界面常用按钮详解Java基础-day06

二、 总结习题

习题一 if语句实现减肥计划

public class LoseWeight_If {

	/*
		使用if语句实现减肥计划
	 */
	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);
		System.out.println("请输入星期数:");
		int week = sc.nextInt();

		if (week < 1 || week > 7) {
			System.out.println("输入有误");
		} else if (week == 1) {
			System.out.println("跑步");
		}else if (week == 2) {
			System.out.println("游泳");
		}else if (week == 3) {
			System.out.println("慢走");
		}else if (week == 4) {
			System.out.println("单车");
		}else if (week == 5) {
			System.out.println("拳击");
		}else if (week == 6) {
			System.out.println("爬山");
		}else{
			System.out.println("好好吃一顿");
		}
	}
}

习题二 switch语句实现减肥计划

public class LoseWeight_If {

	/*
		使用if语句实现减肥计划
	 */
	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);
		System.out.println("请输入星期数:");
		int week = sc.nextInt();

		if (week < 1 || week > 7) {
			System.out.println("输入有误");
		} else if (week == 1) {
			System.out.println("跑步");
		}else if (week == 2) {
			System.out.println("游泳");
		}else if (week == 3) {
			System.out.println("慢走");
		}else if (week == 4) {
			System.out.println("单车");
		}else if (week == 5) {
			System.out.println("拳击");
		}else if (week == 6) {
			System.out.println("爬山");
		}else{
			System.out.println("好好吃一顿");
		}
	}
}

习题三 斐波那契数列问题

public class RabbitDemo {

	/*
		斐波那契数列问题
			斐波那契数列前n项:1,1,2,3,5,8...(从第3项起后一个数等于前两数之和)
	 */

	public static void main(String[] args) {

	//	System.out.println(fibonacci(20));

		int sum = 0;
		for (int i = 1; i <= 20; i++) {
			sum += fibonacci(i);
		}
		System.out.println("第二十天的兔子总对数为:" + sum + " 对");
	}


	private static int fibonacci(int n) {	//递归调用方法求斐波那契数列第n项
		if (n == 1 || n == 2) {
			return 1;
		} else {
			return fibonacci(n - 1) + fibonacci(n - 2);
		}
	}
}

习题四 百钱百鸡问题

public class ChickenDemo {

	/*
	需求:
		我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。
		百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?

		思路:
			1.第1层循环,用于表示鸡翁的范围,初始化表达式的变量定义为x = 0; 判断条件是x <= 20;
			2.第2层循环,用于表示鸡母的范围,初始化表达式的变量定义为y = 0; 判断条件为y <= 33;
			3.这个时候用于表示鸡雏的变量 z = 100 - x - y;
			4.判断表达式 z % 3 == 0 和表达式 5 * x + 3 * y + z / 3 == 100是否同时成立,若成立则输出对应的x, y, z 的值,
			  就是对应的鸡翁,鸡母和鸡雏的值

	 */
	public static void main(String[] args) {

		chickenJudge();
	}

	private static void chickenJudge() {
		//1.第1层循环,用于表示鸡翁的范围,初始化表达式的变量定义为x = 0; 判断条件是x <= 20;
		for (int x = 0; x <= 20; x++) {
			//2.第2层循环,用于表示鸡母的范围,初始化表达式的变量定义为y = 0; 判断条件为y <= 33;
			for (int y = 0; y <= 33; y++) {
				//3.这个时候用于表示鸡雏的变量 z = 100 - x - y;
				int z = 100 - x - y;
				//判断表达式 z % 3 == 0 和表达式 5 * x + 3 * y + z / 3 == 100是否同时成立
				if (z % 3 == 0 && 5 * x + 3 * y + z / 3 == 100) {
					System.out.println(x + ", " + y + ", " + z);
				}
			}

		}
	}
}

习题五 判断两数组内容是否相同

public class ArrayContentCompare {

	/*
		判断两个数组中的内容是否相同
	 */
	public static void main(String[] args) {

		int[] arr1 = {11, 22, 33, 44, 55, 66};
		int[] arr2 = {11, 22, 33, 44, 55, 66};

		System.out.println(contentCompare(arr1, arr2));

	}

	//返回值类型为boolean,两个参数为int[] arr1,int[] arr2
	private static boolean contentCompare(int[] arr1, int[] arr2) {

		//判断两个数组的长度是否相同,若不同则直接返回false
		if (arr1.length != arr2.length) {
			return false;
		}

		//逐个判断数组中的每一个元素是否相同,但凡有一个不同则返回false
		for (int i = 0; i < arr1.length; i++) {
			if (arr1[i] != arr2[i]) {
				return false;
			}
			/*
			如果在if后方加上else语句会导致遇到第一个相同的元素的时候返回true,
			 方法直接中断。
			 */
		}

		//若以上两个条件都不满足,则返回true
		return true;
	}
}

习题六 判断两个数组内容是否相同(进阶)

public class PrimerArrayCompare {

	/*
		判断两个数组中的内容是否一致。
			对一致的定义:只需要内容全部相同,不需要元素顺序相同。
		思路:
			1. 判断两个数组长度是否相同,若长度不同直接返回false;
			2. 遍历第一个数组,求出每个元素在第一个数组中的个数,同时遍历第二个数组,
			判断相同元素在第二个数组中的个数。
			3. 判断相同元素在各自数组中的个数是否相同,如果不同返回false
			4. 如果以上条件都不满足,返回true
	 */
	public static void main(String[] args) {

		int[] arr1 = {11, 22, 11, 33, 22, 44, 55, 66};
		int[] arr2 = {11, 11, 22, 55, 22, 44, 33, 66};

		System.out.println(arr1);
		System.out.println(arr2);
		System.out.println(arrayCompare(arr1, arr2));

	}

	private static boolean arrayCompare(int[] arr1, int[] arr2) {

		//判断两个数组长度是否相同,若长度不同直接返回false;
		if (arr1.length != arr2.length) {
			return false;
		}
				/*
					遍历第一个数组,求出每个元素在第一个数组中的个数,同时遍历第二个数组,
					判断相同元素在第二个数组中的个数。
				*/

		for (int e : arr1) {    //遍历数组1, 因为两个数组等长,也相当于遍历数组2

			int count_1 = 0;
			int count_2 = 0;

			for (int j = 0; j < arr1.length; j++) {        //分别遍历两个数组
				if (e == arr1[j]) {
					count_1++;        //求出元素e在数组1中的数量
				}
				if (e == arr2[j]) {        //求出元素e在数组2中的数量
					count_2++;
				}

			}

			//判断元素e在各自数组中的个数是否相同,如果不同返回false
			if (count_1 != count_2) {
				return false;
			}
		}

		//如果以上条件都不满足,返回true
		return true;
	}
}

习题七 1~100逢七过

public class PassSeven {

	//逢7过
	public static void main(String[] args) {

		int count = 0;
		for (int i = 1; i <= 100; i++) {
			count++;
			if (count % 5 == 0) {	// 每五个换一行
				System.out.println(i);
			} else {
				if ((i % 7 == 0) || (i % 10 == 7) || (i / 10 == 7)) {
					System.out.print("pass ");
					continue;
				}
				System.out.print(i + "  ");
			}

		}
	}

}

习题八 查找数组中某元素的索引值

public class ArrayQuery {

	/*
		需求:
			已知一个数组,从键盘键入一个数,在该数组中查询该数的索引值,
			并在控制台输出其索引值。
	 */
	public static void main(String[] args) {

		int[] arr = {11,22,33,44,55,66};
		int e;
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入你想要查找的元素:");
		e = sc.nextInt();

		if (query(arr, e) != -1) {	//若返回值不为-1代表数组中有该元素
			System.out.println("你要查找的元素索引是:" + query(arr,e));
		} else {	//若返回值是-1代表数组中没有该元素
			System.out.println("你查找的元素没有包含在该数组内");
		}


	}

	//返回值类型为int, 两个参数类型为int[] arr, int e
	private static int query(int[] arr, int e) {

		for (int i = 0; i < arr.length; i++) {	//遍历数组,若元素e存在于数组中,返回其索引值
			if (arr[i] == e) {
				return i;
			}
		}
		return -1;	//返回-1代表数组中没有该元素
	}
}

习题九 按特定条件对数组内容求和

public class ArraySum {

	/*
		数组内容求和, 要求被求和的元素个位和十位都不能是7, 并且为偶数
	 */
	public static void main(String[] args) {

		int[] arr = new int[5];
		autoInitArray(arr);
		System.out.println("数组中的元素有:");
		printArray(arr);
		System.out.println("-----------");
		System.out.println("数组元素之和为:");
		System.out.println(arraySum(arr));


	}

	//返回值类型为void, 参数类型为int[] arr
	private static void autoInitArray(int[] arr) {    //自动初始化数组

		Random rd = new Random();
		for (int i = 0; i < arr.length; i++) {
			arr[i] = rd.nextInt(100) + 1;
		}
	}
	//返回值类型为void, 参数类型为int[] arr
	private static void printArray(int[] arr) {    //格式化输出数组内容

		System.out.print("[");
		for (int i = 0; i < arr.length; i++) {
			if (i == arr.length - 1) {
				System.out.print(arr[i]);
			} else {
				System.out.print(arr[i] + ", ");
			}
		}
		System.out.println("]");
	}

	//返回值类型为int,参数类型为int[] arr
	private static int arraySum(int[] arr) {

		int sum = 0;
		for (int i : arr) {        //数组求和

			//若该元素个位和十位都没有7,且为偶数,累加
			//如果元素为偶数,其个位注定不能是7, 因此可以省略判断条件 i % 10 != 7
			if ((i / 10 != 7) && (i % 2 == 0)) {
				sum += i;
			}
		}

		return sum;
	}

}

习题十 反转数组中的内容

public class ArrayReverse {

	//数组内容反转
	public static void main(String[] args) {

		int[] arr = {11, 22, 33, 44, 55, 66,77};

		System.out.println("反转前的数组为:");
		printArray(arr);
		System.out.println("------------------");
		System.out.println("反转后的数组为:");
		printArray(reverseArray(arr));
	}

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

		int temp;

	/*
		int mid = arr.length / 2;
		int head = 0;
		int tail = arr.length - 1;

		//方法一:以数组索引中值为界,前后对称位置元素互换
		for (int i = 0; i <= mid; i++) {

			temp = arr[head];
			arr[head] = arr[tail];
			arr[tail] = temp;
			head++;
			tail--;
		}
		*/

		//方法二:设置首尾索引,当首索引小于尾索引时,交换对称位置上的元素,当首尾索引相等或首索引大于尾索引时,
		// 说明已达到或越过索引中值,可以结束交换
		for (int start = 0, end = arr.length - 1; start < end; start++, end--) {
			temp = arr[start];
			arr[start] = arr[end];
			arr[end] = temp;
		}
		return arr;
	}

	private static void printArray(int[] arr) {

		for (int i : arr) {
			System.out.print(i + "\t");
		}
		System.out.println();
	}
}

习题十一 根据评委打分求选手平均分的案例

public class Judgement {

	/*
		需求:
			在编程比赛中,选手的得分为6名评委所打分数(0~100)去掉最高分和
			最低分之后的4个得分求平均数(忽略小数)。
	 */
	public static void main(String[] args) {

		int[] arr = new int[6];
		autoInitArray(arr);
	//	manuallyInitArray(arr);
		System.out.println("6评委打分为:");
		printArray(arr);
		System.out.println("----------------");
		System.out.println("最高分为:" + getMax(arr));
		System.out.println("最低分为:" + getMin(arr));
		System.out.println("平均分为:" + getAvg(arr));
	}

	//返回值类型为void, 参数类型为int[] arr
	private static void autoInitArray(int[] arr) {    //自动初始化数组

		Random rd = new Random();
		for (int i = 0; i < arr.length; i++) {
			arr[i] = rd.nextInt(100) + 1;
		}
	}

/*
	//返回值类型为void, 参数类型为int[] arr
	private static void manuallyInitArray(int[] arr) {    //手动初始化数组

		Scanner sc = new Scanner(System.in);
		for (int i = 0; i < arr.length; i++) {
			System.out.printf("请输入第%d位评委的打分:\n", (i + 1));
			arr[i] = sc.nextInt();
		}
	}
	*/

	//返回值类型为int, 参数类型为int[] arr
	private static int getMax(int[] arr) {    //获取数组中的最大值

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

	//返回值类型为int, 参数类型为int[] arr
	private static int getMin(int[] arr) {    //获取数组中的最小值

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

	//返回值类型为int, 参数类型为int[] arr
	private static int getAvg(int[] arr) {

		int sum = 0;
		for (int i : arr) {		//数组求和
			sum += i;
		}

		//返回除去最高分和最低分之后的平均分
		return (sum - getMax(arr) - getMin(arr)) / (arr.length - 2);
	}

	//返回值类型为void, 参数类型为int[] arr
	private static void printArray(int[] arr) {    //格式化输出数组内容

		System.out.print("[");
		for (int i = 0; i < arr.length; i++) {
			if (i == arr.length - 1) {
				System.out.print(arr[i]);
			} else {
				System.out.print(arr[i] + ", ");
			}
		}
		System.out.println("]");
	}

}

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

	int sum = 0;
	for (int i : arr) {		//数组求和
		sum += i;
	}

	//返回除去最高分和最低分之后的平均分
	return (sum - getMax(arr) - getMin(arr)) / (arr.length - 2);
}

//返回值类型为void, 参数类型为int[] arr
private static void printArray(int[] arr) {    //格式化输出数组内容

	System.out.print("[");
	for (int i = 0; i < arr.length; i++) {
		if (i == arr.length - 1) {
			System.out.print(arr[i]);
		} else {
			System.out.print(arr[i] + ", ");
		}
	}
	System.out.println("]");
}

}


相关标签: Java基础