需求: 定义一个数组其中包含多个数字。用自己的方式最终实现,奇数放在数组的左边,偶数放在数组的右边。(可以创建其他数组,不必须在原数组中改变)
分析:
1.初始化一个数组,里面既可以存储奇数也可以存储偶数(下面称这个个数组为原数组)。
2.再次定义两个数组,一个用来存放从原数组中挑出来的奇数int[] anotherOdds = new int[arr.length];
,一个用来存放从原数组中挑出来的偶数int[] anotherEve = new int[arr.length];
。数组长度均为原数组长度。
3.定义变量int j=0;
,用来计数原数组中有多少个奇数,并且在遍历原数组的时候遇到奇数可以存放到奇数数组中,同时j++;
。同理,定义变量int k=0;
,用来计数原数组中有多少个偶数,并且在遍历原数组的时候遇到偶数可以存放到偶数数组中,同时k++;
。
4.遍历偶数数组,把偶数数组中的数值拿出来放到奇数数组下标为j
起始的位置,放入成功则执行j++;
下面为需求实现代码:
import java.util.Arrays;
import java.util.Scanner;
/*
定义一个数组其中包含多个数字。
用自己的方式最终实现,奇数放在数组的左边,
偶数放在数组的右边。
(可以创建其他数组,不必须在原数组中改变)
*/
public class Demo19 {
public static void main(String[] args) {
//创建Scanner对象
Scanner scanner = new Scanner(System.in);
//输出提示信息
System.out.println("请输入数组的长度:");
//接受用户输入:
int getUserNum = scanner.nextInt();
//动态初始化一个数组
int[] arr = new int[getUserNum];
for (int i = 0; i < arr.length; i++) {
//输出提示信息
System.out.println("请往数组中输入数字:");
int getUserIn = scanner.nextInt();
arr[i] = getUserIn;
}
//输出提示信息
System.out.println("处理前的数组为:"+ Arrays.toString(arr));
//判断奇数还是偶数
//重新定义另一个数组用于接收奇数数据
int[] anotherOdds = new int[arr.length];
//再次定义一个数组接受偶数数据
int[] anotherEve = new int[arr.length];
//定义一个变量用于得到新数组的奇数索引
int j = 0,k=0;
for (int i = 0; i < arr.length; i++) {
if (arr[i]%2!=0){
anotherOdds[j] = arr[i];
j++;
}else {
anotherEve[k] = arr[i];
k++;
}
}
for (int i = 0; i < k; i++) {
anotherOdds[j] = anotherEve[i];
j++;
}
//输出一下新数组
System.out.println("处理后的数组为:"+Arrays.toString(anotherOdds));
// System.out.println(Arrays.toString(anotherEve));
// System.out.println(j);
}
}
执行效果如下