0

「O」でランプレベルを表示するプログラムを書いていますが、コンパイルすると「シンボルが見つかりません」と表示され、「メッセージ」と「明るさ」を宣言しています。class Lamp と class TestLamp を別のファイルに保存すると、Lamp をコンパイルすると、エラーは表示されません。しかし、TestLamp をコンパイルすると「シンボルが見つかりません」と表示されます

class Lamp {

    // Sub-task 1: Declare and initialize data member with default value
    int brightness=1;

    // Sub-task 2: Define a method to indicate the brightness level of lamp
    String getBrightness() {
        String message = "";
        while(brightness>0) { 
            brightness--;
            message += "O"; 
        } 

        return message;
    }

    // Sub-task 3: Define a method to update the brightness of the lamp
    void setBrightness(int b) {

        if(b<1 || b>5) 
            brightness=2;
        else
            brightness=b;

    }
}

class TestLamp {
    public static void main (String[] args) {
        // Sub-task 4: Declare and create 3 lamp objects
        Lamp lamp1,lamp2,lamp3;

        // Sub-task 5: Adjust the lamp brightness according to the requirement
        lamp1.setBrightness(3);
        lamp2.setBrightness(10);

        // Sub-task 6: Display the information of the created lamps
        lamp1.getBrightness();
        System.out.println("Lamp1"+lamp1.message);
        lamp2.getBrightness();
        System.out.println("Lamp2"+lamp2.message);
    }
}
4

9 に答える 9

3

setBrightness() メソッドの前に、ランプ オブジェクトをインスタンス化する必要があります。

Lamp lamp1 = new Lamp();

すべてのランプ オブジェクトに対して同じ操作を行います。

次に、変更します

System.out.println("Lamp1"+lamp1.message);

System.out.println("Lamp1"+lamp1.getBrightness());
于 2013-11-08T07:46:40.117 に答える
2

エラーを修正しました。

Error 1:
System.out.println("Lamp1"+lamp1.getBrightness()); //changed from lamp1.message
System.out.println("Lamp1"+lamp1.getBrightness()); //changed from lamp2.message

Error 2:
        lamp1 = new Lamp(); //missing instance creation
        lamp2 = new Lamp();//missing instance creation

/* lamp3 と lamp4 を使用する場合は、そのインスタンスも作成します */

修正後の作業コード:

 class Lamp {

// Sub-task 1: Declare and initialize data member with default value
    int brightness=1;

// Sub-task 2: Define a method to indicate the brightness level of lamp
String getBrightness() {
    String message = "";
    while(brightness>0) { 
        brightness--;
        message += "O"; 
    } 


    return message;
}

// Sub-task 3: Define a method to update the brightness of the lamp
void setBrightness(int b) {

    if(b<1 || b>5) 
        brightness=2;
    else
        brightness=b;


}


  }

 class TestLamp {
public static void main (String[] args) {
    // Sub-task 4: Declare and create 3 lamp objects
    Lamp lamp1,lamp2,lamp3;

    lamp1 = new Lamp();
    lamp2 = new Lamp();

    // Sub-task 5: Adjust the lamp brightness according to the requirement
    lamp1.setBrightness(3);
    lamp2.setBrightness(10);

    // Sub-task 6: Display the information of the created lamps
    lamp1.getBrightness();
      System.out.println("Lamp1"+lamp1.getBrightness());
    lamp2.getBrightness();
      System.out.println("Lamp2"+lamp2.getBrightness());


}
      }
于 2013-11-08T07:46:01.000 に答える
1

初めに:

  • System.out.printline で呼び出そうとする Lamp クラスにメッセージ変数がありません。 System.out.println("Lamp1"+lamp1.getBrightness()); を使用してください。代わりは

次に、いくつかの慣例について説明します。

  • ソースファイル public -> public class TestLamp {
  • ほとんどのゲッターは、プライベート/保護された変数をクラス インスタンス内から取得するために使用されます。あなたの場合、文字列表現を返したい場合は、メソッド toString() または getDispleyText() を呼び出すことをお勧めします
于 2013-11-08T07:56:50.250 に答える
1

Testlamp クラスでランプのオブジェクトを作成する

Lamp lamp1=new Lamp();
于 2013-11-08T07:46:42.383 に答える
1

JavaObject objectName;では、実際には新しいオブジェクトを作成していないことを覚えておくことが重要です。オブジェクトへのポインタ/参照を作成します。最初に作成されたときは、アドレス 0 (null) に設定されます。new実際にオブジェクトを作成するには、キーワードを使用する必要があります。あなたの場合、次のことを行う必要があります...

class TestLamp 
{
    public static void main (String[] args) 
    {
        // Sub-task 4: Declare and create 3 lamp objects
        Lamp lamp1,lamp2,lamp3;

        lamp1 = new Lamp();
        lamp2 = new Lamp();
        lamp3 = new Lamp();

        // Sub-task 5: Adjust the lamp brightness according to the requirement
        lamp1.setBrightness(3);
        lamp2.setBrightness(10);

        // Sub-task 6: Display the information of the created lamps
        lamp1.getBrightness();
        System.out.println("Lamp1"+lamp1.message);
        lamp2.getBrightness();
        System.out.println("Lamp2"+lamp2.message);
    }
}

編集: また、Lamp の文字列メッセージは、関数内にあるため、メイン メソッドでは到達できません。代わりに、そのために狂ったメソッド getBrightness() を使用します。

        System.out.println("Lamp1" + lamp1.getBrightness(););
        System.out.println("Lamp2" + lamp2.getBrightness(););
于 2015-12-28T16:51:27.783 に答える