请问您如何在没有数字的情况下将结果从数组传递到另一个数组?在这种情况下,没有数字。这是我的代码,我被困住了。
结果是:[0,1,2,3,0,5,0,7,0,0,0,1] - 我想做的就是创建另一个数组并从上面传递数字而不是0。
感谢。
public class SieveOfEratosthenes {
public static void main(String[] args) {
int[] myArray = new int[12];
fillArrayWithNumbers(myArray);
System.out.println(Arrays.toString(sieve(myArray)));
}
private static void fillArrayWithNumbers(int[] myArray) {
for (int i = 0; i < myArray.length; i++) {
myArray[i] = i;
}
}
public static int[] sieve(int[] maximumNumber) {
for (int j = 2; j < maximumNumber.length; j++) {
for (int i = j * 2; i < maximumNumber.length; i += j) {
maximumNumber[i] = 0;
}
}
return maximumNumber;
}
}
答案 0 :(得分:3)
您可以将Int[]
转换为Stream
并过滤掉零值。
<强> 代码 强>
public static void main(String[] args) {
int[] arr = new int[]{0, 1, 2, 3, 0, 5, 0, 7, 0, 0, 0, 11};
int[] ints = Arrays.stream(arr)
.filter(i -> i != 0)
.toArray();
Arrays.stream(ints).forEach(System.out::println);
}
<强> 输出 强>
1
2
3
5
7
11
答案 1 :(得分:1)
解决方案在上面,就像infinitezero所说的写一个包含数组长度的for循环一样。然后将数组中的项目复制为长度。
for(int i = 0; i < arr.length; i++){
if(arr[i] == 0){
}
else{
arr[i] = arr2[i];
}
答案 2 :(得分:0)
我认为您可以创建一个新数组并使用以上零值填充它: 你想要做什么来省略所有偶数(2除外)。然后它应该这样做:
public static int[] sieve(int[] maximumNumber) {
int[] result = new int[maximumNumber.length];
int index= 0;
for (int i = 1; i < maximumNumber.length; i++) {
if (i == 2 || i % 2 != 0) { // i is 2 or odd
result[index] = i;
index++; // This will store the real length of the array
}
}
return Arrays.copyOfRange(result, 0, index);
}