1

私はこのJavaコードを持っています

public class SlumbookDriver{
public static void main(String args[]){
    Slumbook[] contacts = new Slumbook[19];
    autoAdd();
    String con1 = contacts[0].viewToString();
    System.out.println(con1);
    }

メソッド autoAdd を次のように使用します

public static void autoAdd(){
   contacts[0] = new Slumbook("2014-0002", "Karl Marx", "Karly", "German", "Cologne",  
"House", "2358681", "Single", "N/A", "Karl_Marx@yahoo.com");
 contacts[1] = new Slumbook("2015-0006", "Fidel Castro", "Strong Man of Cuba", "Cuban",   
"Cuba", "Lungon", "7863264", "Married", "Dead", "FidelCatro@msn.com");
}
}

実行しようとすると、次のようにメイン内で配列を割り当てると、コードerror: Cannot find Symbolであるシンボルがvariable contacts正しく機能すると表示されます。

public class SlumbookDriver{
    public static void main(String args[]){
        Slumbook[] contacts = new Slumbook[19];
        contacts[0] = new Slumbook("2014-0002", "Karl Marx", "Karly", "German", "Cologne", 
        "House", "2358681", "Single", "N/A", "Karl_Marx@yahoo.com");
        contacts[1] = new Slumbook("2015-0006", "Fidel Castro", "Strong Man of Cuba", "Cuban", "Cuba", "Lungon", "7863264", "Married", "Dead", "FidelCatro@msn.com");
        String con1 = contacts[0].viewToString();
        System.out.println(con1);
    }

しかし、それは私が望むものではありません

4

3 に答える 3

4

連絡先はメソッド autoAdd() の範囲外です。次のようにパラメーターとして渡す必要があります。

public static void autoAdd(Slumbook[] contacts){//body};

そしてそれをそのように呼びます

autoAdd(contacts);
于 2015-01-02T01:12:43.140 に答える
1

実行しようとすると、エラーが表示されます:「シンボルが見つかりません」変数であるシンボルcontacts

それは正しい。contactsのローカル変数であると宣言しました。これは、メソッドmainの本体内からのみアクセスできることを意味します。main

あなたの選択肢は次のとおりです。

  • メソッドcontactsへの参照をパラメーターとして渡します。autoAdd

  • contacts変数をクラスの (プライベート) 変数としてstatic宣言しますSlumbookDriver。これはおそらく最も単純ですが、アプリに「連絡先リスト」が 1 つしかないことを意味します。

  • contacts変数をクラスの (プライベート) インスタンス変数として宣言しますSlumbookDriverSlumbookDriver次に、インスタンスを作成しautoAdd、非静的メソッドを作成する必要があります。これにより、最もオブジェクト指向のソリューションが得られます。

どれが最高ですか?

  • 小さなアプリケーション (たとえば、100 行ほどのコード) の場合、実質的な違いはほとんどありません。文体上の考慮事項は別の問題です...しかし、それは先生に説明してもらいます。

  • 大規模なアプリケーションの場合、さまざまな理由から、3 番目の選択肢が最適です。たとえば、静的を使用するコードは、大規模なアプリケーションでの再利用 (埋め込みなど) が難しく、テストも困難です。さらに、継承とポリモーフィズム、およびその他の Java 言語機能を効果的に使用することが難しくなります。

于 2015-01-02T01:20:22.060 に答える
0
 Slumbook[] contacts = new Slumbook[19];

メインメソッド内で定義されています。したがって、それはメソッドのローカル変数です。つまり、メイン メソッド以外ではアクセスできません。

あなたにできることは

  1. 呼び出し時に連絡先をautoAdd受け入れて渡すようにメソッドを変更します。Slumbook[]
  2. static連絡先を変数(クラス変数)として定義することもできます
  3. または、autoAddメソッドと連絡先の両方の変数インスタンスを変更できます
于 2015-01-02T01:28:35.597 に答える