2015-03-02 65 views
0

我已經創建了一個Java撲克程序,並且我已經可以檢查玩家或經銷商是否有一對並且如果他們確實獲勝,他們的帳戶餘額。我現在想要得到它,這樣如果一個球員有一個皇家同花順,該計劃將讀取它,並把獎金進入贏家帳戶。我想要使​​用循環。這是我的代碼到目前爲止創建頭部檢查器的Java撲克遊戲

private int flush(List<PokerCard> hand) 
{ 
    List<PokerCard> handToSort = new ArrayList<PokerCard>(); 
    Collections.copy(handToSort, hand); 
    Collections.sort(handToSort, new CardComparator()); 
    { 
     List<PokerCard> deck = new ArrayList<PokerCard>(); 
     for (int i = 0; i < 4; i ++) 
     { 
      for (int j = 8; j < 13; j ++) 
      { 
       System.out.println("You have a Royal Flush 10 through Ace!!"); 
       return flush; 
      } 
      else (int j = 0; j < 6; j++) 
      { 
       System.out.println("You have a straigth 2 through 6!!"); 
       return flush; 
      } 
      else (int j = 1; j < 7; j++) 
      { 
       System.out.println("You have a straigth 3 through 7!!"); 
       return flush; 
      } 
      else (int j = 2; j < 8; j ++) 
      { 
       System.out.println("You have a straigth 4 through 8!!"); 
       return flush; 
      } 
      else (int j = 3; j < 9; j++) 
      { 
       System.out.println("You have a straigth 5 through 9!!"); 
       return flush; 
      } 
      else (int j = 4; j < 10; j++) 
      { 
       System.out.println("You have a straigth 6 through 10!!"); 
       return flush; 
      } 
      else (int j = 5; j < 11; j++) 
      { 
       System.out.println("You have a straigth 7 through Jack!!"); 
       return flush; 
      } 
      else (int j =6; j < 12; j++) 
      { 
       System.out.println("You have a straigth 8 through Queen!!"); 
       return flush; 
      } 
      else (int j = 7; j < 13; j ++) 
      { 
       System.out.println("You have a straigth 9 through King!!"); 
       return flush; 
      } 

它顯示爲此代碼的錯誤,但我看不出是什麼錯誤。我對編碼相當陌生,並且給自己設定了一個挑戰,但是我的咬合力超過了我的能力。

+3

你正在混合一個for循環和一個if-else語句,從而產生了一些不正常的'for-else'構造。 Javac不喜歡那樣。我建議大量的基本教程(以及驅魔)。 – Kayaman 2015-03-02 14:09:49

回答

0

for陳述沒有else組件。因此,這...

 for (int j = 8; j < 13; j ++) 
     { 
      System.out.println("You have a Royal Flush 10 through Ace!!"); 
      return flush; 
     } 
     else (int j = 0; j < 6; j++) 
     { 
      System.out.println("You have a straigth 2 through 6!!"); 
      return flush; 
     } 

會變成這樣...

 for (int j = 8; j < 13; j ++) 
     { 
      System.out.println("You have a Royal Flush 10 through Ace!!"); 
      return flush; 
     } 
     for (int j = 0; j < 6; j++) 
     { 
      System.out.println("You have a straight 2 through 6!!"); 
      return flush; 
     } 

看起來你可能要返回一個布爾值,而不是一個整數,這將函數的簽名更改爲這...

private boolean flush(List<PokerCard> hand) 

     for (int j = 8; j < 13; j ++) 
     { 
      System.out.println("You have a Royal Flush 10 through Ace!!"); 
      return true; 
     } 
     for (int j = 0; j < 6; j++) 
     { 
      System.out.println("You have a straight 2 through 6!!"); 
      return true; 
     } 

在所有檢查的最後,您想要添加一個return false。這裏還有其他的布爾替代方法,但似乎最適合這個問題:「這隻手是同花順的嗎?」

該功能還有很多冗餘代碼,您可以消除並仍然執行相同的工作。一旦你得到它的工作,你應該付出一些努力。

0

您的程序有幾個錯誤。

首先,您正在錯誤地使用for循環和if-else語句。什麼你可能打算寫看起來更像是這樣的:

for(int i=0;i<4;i++) 
{ 
    if(handToSort.get(i).value >= 8 || handToSort.get(i).value <=13) 
    { 
     System.out.println("You have a Royal Flush 10 through Ace!!"); 
    } 
} 

的第二個問題是,你的函數返回一個整數,但它看起來像你正試圖返回一個字符串,當你寫

return flush; 

你也不檢查卡的套件是什麼。這是檢查是否需要刷新或不刷新的要求。