/ / error: Wymagana tablica, ale znaleziono String - java, arrays

error: Array required, ale String found - java, tablice

Zadeklarowałem publiczne tablice statyczne dla nazwy i identyfikatora:

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

Ale java compiler mówi:

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

Nie wiem co jest źle. Czy tak zadeklarowałem zmienne lub metodę, którą napisałem?

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;
}

Odpowiedzi:

2 dla odpowiedzi № 1

Masz kolizję między statycznym name Tablica łańcuchowa i lokalna name Zmienna łańcuchowa przekazana do add metoda.

Najlepszym rozwiązaniem byłoby użycie różnych nazw. Ułatwiłoby to zrozumienie kodu.

Jeśli nadal nalegasz na używanie tej samej nazwy, możesz rozwiązać kolizję nazw, uzyskując dostęp do tablicy statycznej przy użyciu nazwy klasy:

YourClassName.name[i]= name;

To samo dotyczy twojego id tablica int i id zmienna int.


2 dla odpowiedzi nr 2

Zapłacić bliska Uwaga w jaki sposób używasz zmiennych. name (wewnątrz twojej metody) to String, ale wykonujesz na nim dostęp do elementu tablicy i. To samo dotyczy id; to jest int, ale wykonujesz na nim dostęp do elementu tablicy.

Efektywnie śledzisz zmienne statyczne, co powoduje zamieszanie i ból serca.

Rozważ zmianę nazw parametrów na metodę lub użyj nazwy klasy, aby odwołać się do nich.

Zarówno:

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

lub:

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