2017-12-26 8 views
1

私は学校の割り当てのためにブラックジャックプログラムを作ろうとしていましたが、乱数を取り、それを使ってピクチャを抽出し、同じカードが2枚あることはできません。しかし、私の問題はif文でイメージを返すが、それは私には許されないということにある。なぜなら、文が真でないならば、それは避けたい代わりにnullを返す。撮影されていない画像が選択されるまでその方法を再実行する。何か助けてくれてありがとうございましたブラックジャックプログラムのbufferdimageを返すメソッド

public static BufferedImage ImportCards() { 
    String FileLocation; 
    Double Number; 
    Number = GetRandom(53); 

    int i = Number.intValue(); 
    String num = String.valueOf(i); 
    String main = "DeckOfCards2//Card"; 
    String end = ".png"; 

    BufferedImage image = null; 

    if (myArray[i] == 0) { 
     myArray[i] = 1; 
     playerValue = i; 
     System.out.println("PLayerValue" + playerValue); 
     FileLocation = main + num + end; 
     File file = new File(FileLocation); 

     try { 
      image = ImageIO.read(file); 
     } catch (IOException e) { 
      System.out.println(e); 
     } 

     return image; 
    } else { 
     ImportCards(); 
    } 

    return image; 
} 

答えて

1

なぜ同じメソッドを再帰的に呼び出すのですか?これは課題ですか?もしそうでなければ、これは非常に悪い習慣です。なぜあなたはイメージを正確に必要としますか?あなたは10♥またはそれのようなsmthとしてコンソールに値を印刷することができます。実装がはるかに簡単です。 以上、あなたはなぜカード価値の文字列を読むのですか?最良の方法は、 を読み取る代わりに、スーツと値を定義するCardクラスを持つことです。String num = String.valueOf(i);

再帰なしとの優れた実践:

while (image == null){ 
    image = importCards(); 
} 

いますが、再帰を使う、という場合は、変数にメソッドの結果を割り当てます。

}else { 

    image = ImportCards(); 

    } 
    return image; 
関連する問題