黑马程序员技术交流社区
标题: 作业题 [打印本页]
作者: yangxiaosa 时间: 2017-3-15 21:34
标题: 作业题
分析以下需求,并用代码实现
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个
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |