Ich verstehe das Verhalten von Java über Arrays nicht. Es verbietet, ein Array in einem Fall zu definieren, erlaubt aber die gleiche Definition in einem anderen.Wie definiere ich ein mehrdimensionales Array in Java mit geschweiften Klammern?
Das Beispiel von Tutorial:
String[][] names = {
{"Mr. ", "Mrs. ", "Ms. "},
{"Smith", "Jones"}
};
System.out.println(names[0][0] + names[1][0]); // the output is "Mr. Smith";
Mein Beispiel:
public class User {
private static String[][] users;
private static int UC = 0;
public void addUser (String email, String name, String pass) {
int i = 0;
// Here, when I define an array this way, it has no errors in NetBeans
String[][] u = { {email, name, pass}, {"[email protected]", "jack sparrow", "12345"} };
// But when I try to define like this, using static variable users declared above, NetBeans throws errors
if (users == null) {
users = { { email, name, pass }, {"one", "two", "three"} }; // NetBeans even doesn't recognize arguments 'email', 'name', 'pass' here. Why?
// only this way works
users = new String[3][3];
users[i][i] = email;
users[i][i+1] = name;
users[i][i+2] = pass;
UC = UC + 1;
}
}
Die von NetBeans geworfen Fehler sind:
illegal Beginn des Ausdrucks,
" " erwartet,
keine Aussage.
Und es ist auch nicht erkennen Argumente email
, name
, pass
in der Definition des users
Array. Aber erkennt sie, wenn ich u
Array definieren.
Was ist der Unterschied zwischen diesen beiden Definitionen? Warum der eine funktioniert, aber der andere auf die gleiche Weise nicht?
Aber ich habe das schon gemacht. Direkt unterhalb der Zeile "public class User {" steht die Zeile "private static String [] [] users" – Green
@Green Der 'new String [] []' -Teil wird bei der Kombination von Initialisierung und Deklaration impliziert. Wenn Sie ein Feld oder eine Variable an einer Stelle deklarieren, aber an einer anderen Stelle initialisieren, müssen Sie explizit den Typ des Objekts angeben, das Sie vor dem Aggregieren des Arrays erstellen. – dasblinkenlight