Java 爪哇战争纸牌游戏回合

Java 爪哇战争纸牌游戏回合,java,arrays,Java,Arrays,每当我运行代码时,如果任何玩家获得ace、king、queen或jack,我都会得到以下错误: 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

每当我运行代码时,如果任何玩家获得ace、king、queen或jack,我都会得到以下错误:

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.");
         }
      }
 }  

}
公共类卡
{  
线装;
串级;
int getCard;
INTA;
int b;
int getSuit;
公共卡(){
字符串[]xSuit={“梅花”、“钻石”、“红心”、“黑桃”};
字符串[]xRank={“Ace”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”、“10”、“杰克”、“女王”、“国王”};
a=((int)(Math.random()*4));
b=((int)(Math.random()*13));
suit=xSuit[a];
秩=x秩[b];
}  
int getCard(){
getCard=Integer.parseInt(秩);
退卡;
}
int getSuit(){
getSuit=Integer.parseInt(suit);
退换衣服;
}
公共静态void main(字符串[]args)
{  
牌手=新牌();
卡片播放器2=新卡片();
System.out.println(“WAR”);
System.out.println(“--------------”;
System.out.println(“你玩了“+player.suit”中的“+player.rank+”);
System.out.println(“玩家2播放了“+player2.suit”中的“+player2.rank+”);
如果(player.getCard()>player2.getCard()){
System.out.println(“你赢了!”);
}  
如果(player.getCard()player2.getSuit()){
System.out.println(“你赢了!”);
}
else if(player.getSuit()

有没有办法让它说“杰克”和“皇后”而不出错?

您无法将非数字文本传递到
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...
} 

您将收到一个数字格式异常,因为“Ace”不是
parseInt()
可以正确处理的东西。您可以使用多种方法使其打印出人脸卡名称。一个带有正确值的
开关
块最简单,或者一个查找数组,或者一系列
if
语句……所以我只需要列出每张卡的值?比如A=1,jack=11?谢谢。我现在明白了。当我这么做的时候,我的卡号是0。我想这与我的数学有关。随机()*+1的数字应该能满足你的需要。我已经修改了我的解决方案来解释它