Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从给定数组中挑出奇数和偶数,然后将它们存储到另一个数组中?_Java_Arrays_For Loop - Fatal编程技术网

Java 如何从给定数组中挑出奇数和偶数,然后将它们存储到另一个数组中?

Java 如何从给定数组中挑出奇数和偶数,然后将它们存储到另一个数组中?,java,arrays,for-loop,Java,Arrays,For Loop,如何从给定数组中挑出奇数和偶数,然后将它们存储到另一个数组中?流程是:奇数将进入奇数[]数组,而偶数将进入偶数[]数组 这是我的代码,我不确定这是否正确,因为它在某种程度上存储和打印了零和偶数的混合,没有奇数的存在 int[]num={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}; int[]奇数=新int[10]; int[]偶数=新的int[10]; 对于(int i=0;i{ 列表1.addAll(列表2); 返回列表1; })) //填充二维数组的行:偶

如何从给定数组中挑出奇数和偶数,然后将它们存储到另一个数组中?流程是:奇数将进入
奇数[]
数组,而偶数将进入
偶数[]
数组

这是我的代码,我不确定这是否正确,因为它在某种程度上存储和打印了零和偶数的混合,没有奇数的存在

int[]num={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
int[]奇数=新int[10];
int[]偶数=新的int[10];
对于(int i=0;i
您可以在一个循环中完成所有这一切-这将要快得多。要知道将数字放入的正确位置,请为每个数组添加额外的计数器

你的方法
int[]num={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
int[]奇数=新int[10];
int[]偶数=新的int[10];
int-oddPos=0;
int-evenPos=0;
for(int i=0;i
但是,这不是最好的解决方案,因为(在大多数情况下)无法事先确定
奇数
偶数
数组的长度。然后,您应该使用ArrayList或计算每个列表或其他对象的值

更具活力的方法 如前所述,首先需要确定数组的大小

int[]num={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
int oddCount=0,evenCount=0;
int-oddPos=0,evenPos=0;
//获取每种类型的计数
for(int i=0;i
检测
奇数
偶数
的方法是正确的,但我认为您编写的代码的问题在于
奇数
偶数
数组的长度不是决定性的。因此,对于这一点,我建议使用
ArrayList
,假设您在函数输入中获得数组,并希望在输出中使用数组(我将在输出中混合使用数组以获得更好的性能。但是,根据您将对每个列表提取分离函数也可以)

解决方案
import java.util.ArrayList;
导入java.util.array;
导入java.util.List;
公开课考试{
公共静态整数[][]separateOddnEven(int[]输入){
整数[]输出=新整数[2][];
列表赔率=新的ArrayList();
List evens=new ArrayList();
对于(int i=0;i
输出: 以λ为单位(3行)

int[]nums={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
使用
分区方式将偶数和奇数
num
分开:

Map Map=IntStream.of(nums)
.boxed().collect(分区依据(n->(n&1)==0));
…并将偶数和奇数的结果
列表
转换为
int[]

int[]偶数=map.get(true.stream().mapToInt(i->i.toArray();
int[]odd=map.get(false).stream().mapToInt(i->i).toArray();
System.out.println(“偶数:+array.toString(偶数));
System.out.println(“奇数:+array.toString(奇数));

可以收集两行的二维数组:奇数行和偶数行,如下所示:

int[]num={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
//两行的二维数组:偶数和奇数
int[]arr=新int[2][];
//处理一维数组并填充二维数组
Arrays.stream(num.boxed)()
//地图
.collect(collector.toMap)(
//键:0-偶数,1-奇数
n->n%2,
//值-一个值的列表
//元素,即编号
n->new ArrayList(n的列表),
//合并重复项
(列表1、列表2)->{
列表1.addAll(列表2);
返回列表1;
}))
//填充二维数组的行:偶数和奇数
.forEach((键,值)->arr[key]=value.stream()
.mapToInt(Integer::intValue).toArray());
//输出
System.out.println(“偶数:”+Arrays.toString(arr[0]);
//偶数:[2,4,6,8,10,12,14,16]
System.out.println(“奇数:”+Arrays.toString(arr[1]);
//奇数:[1,3,5,7,9,11,13,15]

为奇数和偶数元素创建一个新的计数器变量,从
odd numbers :
[21, 15]
even numbers :
[0, 24, 22, 14, 16, 18]
even numbers: [2, 4, 6, 8, 10, 12, 14, 16]
odd numbers:  [1, 3, 5, 7, 9, 11, 13, 15]