java基础小练习

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/loveyour_1314/article/details/81474504
/**1.从键盘输入8个整数存放在一个数组中,然后将奇数和偶数分别存入到两个不同的数组中,
	并按奇数、偶数交替的顺序输出这两个数组中的所有数据(先交替输出,如果奇数个数多,
	则再输出剩下的奇数,如果偶数个数多,则再输出剩下的偶数)。*/
		
	public static void outNum() {
		int num[] = new int[8];
		int odd[];
		int even[];
		int j = 0, k = 0;
		Scanner sc = new Scanner(System.in);

		for (int i = 0; i < num.length; i++) {
			System.out.println("请输入第" + (i + 1) + "个整数:");
			num[i] = sc.nextInt();
		}
		sc.close();
		for (int i = 0; i < num.length; i++) {
			if (num[i] % 2 == 0) {
				j++;
			} else {
				k++;
			}
		}
		//获取奇数偶数各个的数组大小,避免浪费内存
		even = new int[j];
		odd = new int[k];
		j = 0;
		k = 0;
		//根据判断给奇数偶数数组赋值
		for (int i = 0; i < num.length; i++) {
			if (num[i] % 2 == 0) {
				even[j] = num[i];
				// System.out.println(j);
				j++;
			} else {
				odd[k] = num[i];
				k++;
			}
		}
		//输出
		if (even.length > odd.length) { // 偶数多
			for (int m = 0; m < odd.length; m++) {
				System.out.print(" 奇数 " + odd[m] + " 偶数  " + even[m]);
			}
			for (int n = odd.length; n < even.length; n++) {
				System.out.print(" 偶数 " + even[n]);
			}
		} else { 
			for (int m = 0; m < even.length; m++) {
				System.out.print(" 奇数 " + odd[m] + " 偶数 " + even[m]);
			}
			for (int n = even.length; n < odd.length; n++) {
				System.out.print(" 奇数 " + odd[n]);
			}
		}
	}
/*	请输入第1个整数:
		5
		请输入第2个整数:
		3
		请输入第3个整数:
		1
		请输入第4个整数:
		2
		请输入第5个整数:
		8
		请输入第6个整数:
		9
		请输入第7个整数:
		7
		请输入第8个整数:
		5
		 奇数 5 偶数 2 奇数 3 偶数 8 奇数 1 奇数 9 奇数 7 奇数 5*/
	
	
	
	/**2.去除数组{1,3,1,4,2,3,6,1,5}中的重复项,存入一个新的数组,并从大到小排序.*/
	public static void distinctAndSort() {
		int arr[] = { 1, 3, 1, 4, 2, 3, 6, 1, 5 };
		Set<Integer> set = new HashSet<>();// 利用set的元素不重复和有序
		for (int i = 0; i < arr.length; i++) {
			set.add(arr[i]);
		}
		for (Integer integer : set) {
			System.out.println(integer);
		}

	}
	//1 2 3 4 5 6 
	
	
	/**3.编写一个方法,能够实现对一个二维数组a进行升序排列,要求整个二维数组中最小的值为a[0][0],
	然后依次是a[0][1],a[0][2]….,a[1][0],a[1][1]…..,使用一个无序的二维数组对你编写的方法进行检验。*/
			public static void twoDimensionalArraySort(int arr[][]) {
				int n = 0;
				//计算二维数组的长度
				for (int i = 0; i < arr.length; i++) {
					for (int j = 0; j < arr[i].length; j++) {
						n++;
					}
				} 

				//定义一个一维数组,将二维数组遍历进去
				int new_arr[] = new int[n];
				int k = 0;
				for (int i = 0; i < arr.length; i++) {
					for (int j = 0; j < arr[i].length; j++) {
						new_arr[k] = arr[i][j];
						k++;
					}
				} 

				//排序
				Arrays.sort(new_arr);

				//将一维数组元素放回二维数组
				k = 0;
				for (int i = 0; i < arr.length; i++) {
					for (int j = 0; j < arr[i].length; j++) {
						arr[i][j] = new_arr[k];
						k++;
					}
				} 

				//打印输出
				for (int i = 0; i < arr.length; i++) {
					for (int j = 0; j < arr[i].length; j++) {
						System.out.print(arr[i][j] + " ");
					}
					System.out.println();
				}

			}
		/*
		 * int arr1[][]={{5,8,4},{65,45,2},{6,0,8}};
			twoDimensionalArraySort(arr1);
		 *  0 2 4 
			5 6 8 
			8 45 65 
		 */
		
	/**4.编写一个程序,提示用户输入10名学生的姓名和成绩,然后按照成绩降序排序输出学生姓名*/
		public static void stuSortDesc() {
			Scanner sc = null;
			String[] stu =  new String[10];
			int[] grade =  new int[10];
			//录入数据
			for (int i = 0; i < 5; i++) {
				 sc = new Scanner(System.in);
				System.out.println("请输入第"+(i+1)+"个学生的姓名:");
				stu[i] = sc.nextLine();
				System.out.println("请输入第"+(i+1)+"个学生的成绩:");
				grade[i] = sc.nextInt();
			}
			sc.close();
			
			//调用快排法
			quickSort(grade,stu, 0 ,grade.length-1);
			
			for (int i = 0; i <grade.length; i++) {
				System.out.println(stu[i]+"的成绩为:"+grade[i]);
				
			}
			
		}
			
		// 快速排序对成绩和学生姓名进行排序
		public static void quickSort(int array[], String arr[], int low, int high) {
	        int pivot, p_pos, i, t;
	        String t1;
	        if (low < high) {
	            p_pos = low;
	            pivot = array[p_pos];
	           
	            for (i = low + 1; i <= high; i++)
	                if (array[i] > pivot) {
	                    p_pos++;
	                    t = array[p_pos];
	                    t1 =arr[p_pos];
	                    array[p_pos] = array[i];
	                    array[i] = t;
	                    
	                    t1 = arr[p_pos];
	                    arr[p_pos] = arr[i];
	                    arr[i] = t1;
	                   
	                }
	            t = array[low];
	            t1 = arr[low];
	            array[low] = array[p_pos];
	            arr[low] = arr[p_pos];
	            array[p_pos] = t;
	            arr[p_pos] = t1;
	            // 分而治之
	            quickSort(array,arr, low, p_pos - 1);// 排序左半部分
	            quickSort(array,arr, p_pos + 1, high);// 排序右半部分
	        }
		}
		/*
		 * 请输入第1个学生的姓名:
			a
			请输入第1个学生的成绩:
			55
			请输入第2个学生的姓名:
			b
			请输入第2个学生的成绩:
			99
			请输入第3个学生的姓名:
			c
			请输入第3个学生的成绩:
			65
			请输入第4个学生的姓名:
			d
			请输入第4个学生的成绩:
			22
			请输入第5个学生的姓名:
			e
			请输入第5个学生的成绩:
			88
			b的成绩为:99
			e的成绩为:88
			c的成绩为:65
			a的成绩为:55
			d的成绩为:22

		 */
		
		
		
	/**5.在歌唱比赛中,共有10位评委进行打分,在计算歌手得分时,去掉一个最高分,去掉一个最低分,
	然后剩余的8位评委的分数进行平均,就是该选手的最终得分。输入每个评委的评分,求某选手的得分。*/
	public static void score(int[] arr) {
		int len = arr.length ;
		//调用冒泡排序
		bubbleSort(arr);
		// 删除最低和最高分
		arr[len-1] = arr[len - 2];
		//数组缩容
		arr = Arrays.copyOf(arr, arr.length - 1);
		arr[0] = arr[1];
		arr = Arrays.copyOf(arr, arr.length - 1);
		//求总和
		int sum = 0;
		for (int j = 0; j < arr.length; j++) {
			sum = sum + arr[j];
		}
		
		System.out.println(sum /arr.length);

	}

	//排序工具方法:冒泡
	public static void bubbleSort(int array[]) {
		int t = 0;
		for (int i = 0; i < array.length - 1; i++)
			for (int j = 0; j < array.length - 1 - i; j++)
				if (array[j] > array[j + 1]) {
					t = array[j];
					array[j] = array[j + 1];
					array[j + 1] = t;
				}
	}
	
	/*
	 * int[] arr = {9,5,8,7,4,5,1,9,10,2} ;//第五题
	    score(arr); 
	    
	    5
	 */
	
	
	
	
	public static void main(String[] args) {
		// outNum(); //第一题
		
		// distinctAndSort();//第二题
		
		// int arr1[][]={{5,8,4},{65,45,2},{6,0,8}};
		// twoDimensionalArraySort(arr1);
		
		// stuSortDesc();//第四题
		
		// int[] arr = {9,5,8,7,4,5,1,9,10,2} ;//第五题
		// score(arr);
		
	
	}

猜你喜欢

转载自blog.csdn.net/loveyour_1314/article/details/81474504