簡體   English   中英

錯誤:需要數組,但找到字符串

[英]error: Array required, but String found

我已經聲明了名稱和ID的公共靜態數組:

public static String[] name = new String[19];     
public static int[] id  = new int[19];

但是java compiler說:

java:70: error: array required, but String found
java:71: error: array required, but int found

我不知道怎么了 是我如何聲明變量還是在編寫的方法中?

public static boolean add(String name, int id, int i) 
{
    if (i < 20) {
        name[i] = name;
        id[i] = id;
        return true;
    }
    else if (i > 20) {
        for (int j = 0; j < id.length; j++) {
            if (id[j] == 0 && name[j].equals("null"))
                id[j] = id;
            name[j] = name; 
        }
        return true;
    }
    else
        return false;
}

密切注意如何使用變量。 name (在您的方法內部)是String ,但是您正在對其進行數組元素訪問。 i在一起。 id也是如此; 它是一個int ,但是您正在對其進行數組元素訪問。

您正在有效地隱藏靜態變量,這會導致混亂和心痛。

考慮將參數重命名為您的方法,或使用類名稱來引用它們。

要么:

public static boolean add (String theName , int theIds, int i)

要么:

// for every usage of id and name as arrays
MyClass.name[i]= name;
MyClass.id[i]=id;

靜態name String數組和傳遞給add方法的本地name String變量之間會發生沖突。

最好的解決方案是使用不同的名稱。 這將使代碼更容易理解。

如果仍然堅持使用相同的名稱,則可以通過使用類名稱訪問靜態數組來解決名稱沖突:

YourClassName.name[i]= name;

同樣適用於您的id int數組和id int變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM