2016-09-25 56 views
0

我几乎是新编入任何编程。我想知道是否有办法将整数转换为字符串?我做了一些谷歌研究,但没有完全回答我的问题。解决int +字符串的问题

我所试图做的是这样的: 我有一个int cardValue = (int)(Math.random() * 13 + 1);

它需要(至少应该)1和13中它打印出cardValue + cardType到控制台的代码之后之间的随机值,例如“Ace of 2”。我想要的是,如果卡片的价值是1,11,12或13,它会打印出“钻石女王”,而不是“钻石12”。

卡类型的打印方式如下,我知道必须有这更好的方式,使任何建议,将藏汉注意:

if (cardType == 1){ 
System.out.println("You got: " + cardValue + aces); 
}else if (cardType == 2) { 
System.out.println("You got: " + cardValue + spades); 
}else if (cardType == 3) { 
System.out.println("You got: " + cardValue + cross); 
}else { 
System.out.println("You got: " + cardValue + diamonds); 
} 
} 

我该如何解决这个问题?

回答

0

使用一个字符串数组卡值索引处掩门文本值等

String[] txt = {"a","Queen"}; 
System.out.println(txt[1]); 

将输出'皇后(假定1是您的卡值)

使用枚举为您的卡类型(和/或卡的值),并给它一个文本字段来保存您想要打印的名称

Enum CardType{ 
    DIAMON("Diamon"), 
    ACE("Ace"); 

    public String name; 

    public CardType(String text){ 
     name = text; 
    } 

    public String toString(){ 
     return name; 
    } 
} 

System.out.println(CardType.ACE); 

将输出'Ace'

1

在打印cardValue变量的值之前,可以使用一些简单的if语句将其转换为人类可读的结果。有四个特殊情况可以解释:Ace,Jack,Queen,King。您可以使用不同的if/else-if声明来处理每个声明。定义一个新的方法从cardValue翻译的文本要输出的cardName

private static String getCardName(int cardValue) { 
    // By default, you just output the number as is 
    String cardName = "" + cardValue; 

    if (cardValue == 1) { 
     cardName = "Ace"; 
    } 
    else if (cardValue == 11) { 
     cardName = "Jack"; 
    } 
    else if (cardValue == 12) { 
     cardName = "Queen"; 
    } 
    else if (cardValue == 13) { 
     cardName = "King"; 
    } 

    return cardName; 
} 

然后,只需使用这种新方法getCardName(cardValue)翻译成所需的输出格式,并在println使用结果声明。

+0

使用开关而不是多个如果 – Tokazio

+0

@Tokazio感谢您的建议!这绝对是一种有效的替代解决方案,但它引入了OP作为编程初学者不一定熟悉的新语句/语法,以及对于某人学习基础知识的解决方案中似乎不必包含的语句/语法。这只是我的看法。 – nbrooks

+0

如果有人感兴趣,他们可以在这里找到更多关于['switch'语句]的细节(https://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html),并且学习更多关于它的方式用这个替换多个'if' /'else if'语句。 – nbrooks