簡體   English   中英

Java War紙牌游戲回合

[英]Java War card game round

每當我運行代碼時,如果任何球員獲得王牌,國王,王后或傑克,我都會得到以下錯誤:

Exception in thread "main" java.lang.NumberFormatException: For input string: "Ace"
    at java.lang.NumberFormatException.forInputString(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at Card.getCard(Card.java:19)
    at Card.main(Card.java:37)

這是我到目前為止的代碼:

public class Card  
{  
    String suit;  
    String rank;    
    int getCard; 
    int a;  
    int b;
    int getSuit;

    public Card(){    
        String [] xSuit = {"Clubs","Diamonds","Hearts","Spades"};  
        String [] xRank = {"Ace","2","3","4","5","6","7","8","9","10","Jack","Queen","King"};  
        a = ((int)(Math.random() * 4));  
        b = ((int)(Math.random() * 13));  
        suit = xSuit[a];  
        rank = xRank[b];  
    }  
    int getCard(){  
        getCard = Integer.parseInt (rank);  
        return getCard;  
    }
    int getSuit(){
        getSuit = Integer.parseInt (suit);
        return getSuit;     
    }


public static void main(String[] args)  
{  
     Card player = new Card();  
     Card player2 = new Card();  

    System.out.println("WAR");  
    System.out.println("--------------");
    System.out.println("You played the " + player.rank + " of " + player.suit);
    System.out.println("Player 2 played the " + player2.rank + " of " + player2.suit);  
    if (player.getCard() > player2.getCard()){  
         System.out.println("You win!");    
     }  
     else if (player.getCard() < player2.getCard()){  
         System.out.println("Player 2 wins!");  
     }
     else if (player.getCard() == player2.getCard()){
         if(player.getSuit() > player2.getSuit()){
                 System.out.println("You win!");
         }
         else if(player.getSuit() < player2.getSuit()){
         System.out.println("Player 2 wins!");
         }
         else{
             System.out.println("There was a draw.");
         }
      }
 }  

}

有什么辦法可以使它說“傑克”和“女王”而不會出錯?

您不能將非數字文本傳遞給parseInt()方法調用,因為它實際上不是數字。 您可以執行的另一種方法是嘗試以下操作:

String suit;  
String rank;     
int a;  
int b;
int getCard;
int getSuit;

public Card(){    
    String [] xSuit = {"Clubs","Diamonds","Hearts","Spades"};  
    // xRank array removed because I don't think you need it anymore. 
    a = ((int)(Math.random() * 4));  
    b = ((int)(Math.random() * 13) + 1);  
    suit = xSuit[a];
    switch(b) {
        case 1:
            rank = "Ace";
            break;
        case 11:
            rank = "Jack";
            break;
        case 12:
            rank = "Queen";
            break;
        case 13:
            rank = "King";
            break;
        default:
            rank = Integer.toString(a);
            break;
    }
} 

int getCard(){    
    return b;  // this will probably be unnecessary now, you'd probably also want a better name for this numeric card value...
} 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM