2016-04-08 9 views
0

コードソースを投稿するのは初めてです。私はObject &コンストラクターを練習していますが、このコードを作成することになりましたが、実行するとStringGeneratedがnullになり、「The Color Generated was:null」と表示されます。私はそれを変更して修正しようとしましたが、失敗しました。読んでくれてありがとう。Simpeオブジェクトとクラスの問題 - Java

public class Color{ 
    int colorValue; 
    String colorGenerated1; 

    public Color(String colorGenerated){ 
     System.out.println("The Color Generated was: " + colorGenerated); 
    } 

    public void randomizeColor(){ 
     Random randomColor= new Random(); 
     colorValue = randomColor.nextInt(3); 
    } 

    public int getColor(){ 

     if(colorValue == 1){ 
      colorGenerated1 = "Red"; 
     } else if(colorValue == 2){ 
      colorGenerated1 = "Blue"; 
     } else if(colorValue == 3){ 
      colorGenerated1 = "Yellow"; 
     } 

     return colorValue; 
    } 

    public static void main(String[] args){ 
     Color color = new Color("colorGenerated"); 
     color.randomizeColor(); 
     color.getColor(); 
    } 
} 
+1

あなたが投稿したコードでは、その動作は不可能です。あなたは同じコードを実行していますか? –

+0

コンストラクタに渡された値だけを出力するので、あなたが得ている出力は混乱します。唯一の方法は '' New Color(null) 'を実行した場合の出力と同じで、' '生成されるColorはnull:' 'でした。あなたがここに投稿したコードは常に代わりに出力されるでしょう。 "生成された色は:colorGenerated"でした。一方、Elliottが示唆していることは、 'nextInt(3)'は '0'、' 1'または '2'を返すので、' getColor'ロジックは1で消えるように見えます。 – Radiodef

+0

はいはい今私は3の範囲を取得するために、私はnextInt(4)を0,1,2、&3を返さなければならないと思う。ありがとう。 –

答えて

0

ランダムな色で設定する前に生成された色を印刷しています。 Randomは(メソッド呼び出しごとに1回ではなく)1回だけ取得する必要があります。私は何かのようにします

public class Color { 
    private static Random random = new Random(); 
    int colorValue = random.nextInt(3) + 1; // nextInt excludes 3 and includes 0 

    @Override 
    public String toString() { 
     if (colorValue == 1) { 
      return "Red"; 
     } else if (colorValue == 2) { 
      return "Blue"; 
     } else if (colorValue == 3) { 
      return "Yellow"; 
     } 
     return "Unknown"; 
    } 

    public static void main(String[] args) { 
     Color color = new Color(); 
     System.out.println("The Color Generated was: " + color); 
    } 
} 
+0

うわー、とても理解しやすいです。本当にレッスンに感謝します。 –

-1

a readを持ってください。あなたのコードは正常に動作しています。

  • コンストラクタにprintステートメントを追加しました。&オブジェクトを最初に初期化しました。
  • 次に、色をランダム化するコードを追加しました&色を印刷する方法はありません。
  • したがって、コンストラクタを呼び出すと、nullのみが返されます。
+0

あなたより、ヌルが何を意味するのか分からなかったという事実を無視しましたが、今はあなたに感謝しています。 –

0

まず、クラスのインスタンスを作成します。実際にはコンストラクタを実行します。パラメータは文字列です。それが表示されます。 その後、colorgeneratedを初期化します。 color.getColor()の後に、生成されたcolorを表示する必要があります。なぜなら、実際には初期化されているからです。

+1

私は理解しています、助けてくれてありがとう。 –

関連する問題