配列に関するJavaの動作を理解できません。 1つのケースで配列を定義することは禁じられていますが、別のケースでは同じ定義を使用できます。中括弧を使用してJavaで多次元配列を定義する方法は?
チュートリアルからの例:
String[][] names = {
{"Mr. ", "Mrs. ", "Ms. "},
{"Smith", "Jones"}
};
System.out.println(names[0][0] + names[1][0]); // the output is "Mr. Smith";
私の例:
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;
}
}
のNetBeansによってスローされたミスは、以下のとおりです。式の
違法スタート、
」 ; "予想される,
ステートメントです。
そしてまた、それは、引数email
、users
配列の定義でname
、pass
を認識しません。しかし、u
配列を定義すると、それらを認識します。
これら2つの定義の違いは何ですか?なぜ1つの作品が同じように定義されて別のものは動作しません?
しかし、私は持っていますこれはすでに完了しています。 "public class User {"は "private static String [] [] users"の行です。 – Green
@Green 'new String [] []'部分は、初期化と宣言を組み合わせたときに暗黙指定されています。フィールドまたは変数を1つの場所に宣言し、別の場所で初期化する場合は、作成するオブジェクトの型を配列集約の前に明示的に指定する必要があります。 – dasblinkenlight