[英]JAVA: Incompatible types: int cannot be converted to java.lang.String
[英]incompatible types: java.lang.String cannot be converted to int[]
我正在制作一個打印數組的偶數和奇數的 java 程序。 這是我的偶數代碼,它返回 evens 變量並在 runner 案例中打印偶數。
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]+" "。這對我來說太困難了。
編輯 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;
}
請更改方法的返回類型。 您返回的 String 但方法返回類型是 int Array。 這就是您無法編譯代碼的問題。
你可以做這樣的事情:
僅供參考:我沒有測試過這個,但應該沒問題。
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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.