2016-10-04 17 views
0

ここに別の人物の質問へのリンクと私の正確な割り当てがあります。switch caseメソッドを使って2つの文字列変数を結果文字列に連結する方法

https://stackoverflow.com/questions/39834840/concatenating-switch-statements-for-playing-cards-assignment

は、どのように私は私がスイッチケース内2-10値の範囲を短縮することができますどのように、そしてまた このフォーマット「スーツの値」でsuitofCardをvalueofCardを表示するには、私の結果文字列を得ることができますか? 私は "of"と他のいくつかの行が意味をなさないことを知っています、私はちょうど大きなものをとにかく欠いていると思っただけです。 何か助けていただきありがとうございます。

System.out.print("Please enter a letter/integer of a playing card (A, J, Q, K, or 2 - 10),\nfollowed by card type (D, H, S, C):"); 
    Scanner kbd = new Scanner(System.in); 
    String userInput = kbd.nextLine(); 
    String valueofCard = userInput.substring(0, userInput.length()/2); // gives first half of string 
    String suitofCard = userInput.substring(userInput.length()/2); //give last half of string with + 1 if odd 
    StringBuilder result = new StringBuilder(); 

    switch (valueofCard) { 
    case "A": 
     result.append("Ace of "); 
     break; 
    case "J": 
     result.append("Jack of "); 
     break; 
    case "Q": 
     result.append("Queen of "); 
     break; 
    case "K": 
     result.append("King of "); 
     break; 
    case "2": 
     result.append("2 of "); 
    case "3": 
     result.append("3 of "); 
    case "4": 
     result.append("4 of "); 
    case "5": 
     result.append("5 of "); 
    case "6": 
     result.append("6 of "); 
    case "7": 
     result.append("7 of "); 
    case "8": 
     result.append("8 of "); 

    case "9": 
     result.append("9 of "); 
    case "10":   
     result.append("10 of "); 
    break; 
    } 

    switch (suitofCard) { 
    case "D": 
     result.append("Diamonds"); 
     break; 
    case "H": 
     result.append("Hearts"); 
     break;  
    case "S": 
     result.append("Spades"); 
     break;  
    case "C": 
     result.append("Clubs"); 
     break; 
     } 

    System.out.println(result.toString()); 

    kbd.close(); 
} 

}

+1

System.out.printlnステートメントは、 "switch(suitofCard)"ステートメントの中カッコ内にあります。 – racraman

+0

ありがとうございます!また、「AH」を入力したとき、またはカードの数値(ケース2〜10)に何が返ってこないのか、なぜコードが「AHAce of Hearts」を印刷するのか理解できますか? –

+0

「結果」がどのように初期化されているかを見て、A、J、Q、Kと比較して何が追加されているかを「スイッチ(valueofCard)」内で比較してください:) – racraman

答えて

2

オプション1 - あなたがこれを行うためにのStringBuilderを使用することができます。

StringBuilder cardAndSuit = new StringBuilder(); 

    switch (valueofCard) { 
     case "A": 
      cardAndSuit.append("Ace of"); 
    ..... 


    switch (suitofCard) { 
     case "D": 
      cardAndSuit.append("Diamonds"); 
      break; 
    ... 

    // Print the final string 
    System.out.println(cardAndSuit.toString()); // Ace of Diamonds 

オプション2 - また、通常のStringを作成して追加することもできます。

String cardAndSuit = ''; 
cardAndSuit += "Ace of"; 
cardAndSuit += " Diamonds"; 
System.out.println(cardAndSuit); // Ace of Diamonds 

2は、おそらくより簡単で簡潔です。オプション2は実際には裏のコンパイラによってオプション1に変換されます。

+0

元の質問で再確認するためのコードを更新しました。あなたはなぜ最後の行System.out.println(result.toString())を知っていますか?到達不能なコードですか?私の場合 "2" - ケース "10"を1つのケースステートメントに集計して、それらの値の1つを読み込みます(見つかった場合) –

+0

私によく見えます。よくやった! –

関連する問題