Java 爪哇战争纸牌游戏回合
每当我运行代码时,如果任何玩家获得ace、king、queen或jack,我都会得到以下错误: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
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的数字应该能满足你的需要。我已经修改了我的解决方案来解释它