分析以下需求,并用代码实现 1.键盘录入10个整数存入数组中 2.定义一个方法将奇数放在数组的左侧,偶数放在数组的右侧 3.定义一个方法打印原数组和处理后的数组 4.定义一个方法传入一个int类型数组,输出这个数组中只出现一次的数字及个数 答案: import java.util.Scanner;
public class Homework4 { public static void main(String[] args) { int[] arr = new int[10]; Scanner sc = new Scanner(System.in); for (int i = 0; i < arr.length; i++) { System.out.println("请输入第" + (i + 1) + "个元素的值:"); arr = sc.nextInt(); } pirnt(arr); arr = swap(arr); pirnt(arr);
judge(arr); sc.close(); }
// 定义一个方法传入一个int类型数组,输出这个数组中只出现一次的数字及个数 private static void judge(int[] arr) { boolean b = true; int count = 0; for (int i = 0; i < arr.length; i++) { for (int j = 1 + i; j < arr.length; j++) { if (arr == arr[j]) { b = false; /* * 如果arr==arr[j],那么把arr[j]与arr[i+1]交换位置,同时i++, * 接着加了1的i接着找相同的数,再有就还交换 这样就把相同的数都放在一起了,同时由于每次都会 * i++,这样内循环过后外循环会自动跳过这些相同的数。 */ int temp = arr[j]; arr[j] = arr[i + 1]; arr[i + 1] = temp; i++; } } if (b) { System.out.println(arr); count++; } b = true; } System.out.println(count);
} //打印数组中各元素的方法 private static void pirnt(int[] arr) { System.out.print("["); for (int i = 0; i < arr.length; i++) { if (i == arr.length - 1) { System.out.println(arr + "]"); } else { System.out.print(arr + ","); } }
} //奇数在前偶数在后的方法 private static int[] swap(int[] arr) { int x = 0; int y = arr.length - 1; int[] arr1 = new int[arr.length]; for (int i = 0; i < arr.length; i++) { if (arr % 2 == 0) { arr1[y] = arr; y--; } else { arr1[x] = arr; x++; } } return arr1; } } 运行结果: 请输入第1个元素的值:1 请输入第2个元素的值:2 请输入第3个元素的值:3 请输入第4个元素的值:4 请输入第5个元素的值:5 请输入第6个元素的值:6 请输入第7个元素的值:7 请输入第8个元素的值:8 请输入第9个元素的值:3 请输入第10个元素的值:5 [1,2,3,4,5,6,7,8,3,5] [1,3,5,7,3,5,8,6,4,2] 1 7 8 6 4 2 6个
|