2016-09-25 61 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