我正在制作一个Java程序,该程序打印一个数组的偶数和奇数。这是我的偶数代码,它返回evens变量并在小写的情况下打印偶数。
public static int[] getAllEvens(int[] array)
{
String evens;
for(int i=0; i<array.length; i++)
{
if(array[i]%2==0)
{
evens = (array[i]+" ");
}
}
return evens;
}
但是当我编译时,它说Evens变量不能转换为int []。我知道不应该使用String或int来定义偶数,但是我不知道我还能如何返回array [i] +“”。这对我来说很难。
答案 0 :(得分:1)
编辑1:使用
Scanner
和临时ArrayList
使int[]
紧凑
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] arr = new int[n];
for (int i = 0; i < n; i++) {
arr[i] = sc.nextInt();
}
int[] evens = getAllEvens1(arr);
for (int i : evens) {
System.out.print(i + " ");
}
}
public static int[] getAllEvens1(int[] array) {
int[] temp = new int[array.length]; // if all of array are `even`..
Arrays.fill(temp, -1); //or any flag.. to indicate it's unnecessary
int j = 0;
for (int i : array) {
if (i % 2 == 0) {
temp[j++] = i;
}
}
int[] ret = new int[j];
j = 0;
for (int i : temp) {
if (i != -1) {
ret[j++] = i;
}
}
return ret;
}
public static int[] getAllEvens(int[] array) {
ArrayList<Integer> temp = new ArrayList();
for (int i : array) {
if (i % 2 == 0) {
temp.add(i);
}
}
return temp.stream().mapToInt(Integer::intValue).toArray();
}
}
您的代码中有几个问题。
首先,您尝试返回String
,而函数返回类型为int[]
其次,您只将当前偶数分配给尚未初始化的String
。
修复:
public static String getAllEvens(int[] array) {
StringBuilder evens = new StringBuilder();
for (int i = 0; i < array.length; i++) {
if (array[i] % 2 == 0) {
evens.append(array[i]).append(" ");
}
}
return evens.toString();
}
或者使用String
代替StringBuilder
:
public static String getAllEvens(int[] array) {
String ret = "";
for (int i = 0; i < array.length; i++) {
if (array[i] % 2 == 0) {
ret += array[i] + " ";
}
}
return ret;
}
答案 1 :(得分:0)
请更改方法的返回类型。 您返回的String,但方法的返回类型为int Array。那就是您无法编译代码的问题。
答案 2 :(得分:0)
您可以执行以下操作:
仅供参考:我尚未对此进行测试,但应该可以。
public static int[] getAllEvens(int[] array) {
int[] tmp = new int[array.length];
for (i = 0; i < array.length; i++) {
if (array[i] % 2 == 0) {
tmp[even_count++] = array[i];
}
}
return tmp;
}