#java #switch-statement
#java #оператор switch
Вопрос:
До сих пор я разобрался с моей программой, просто я не понимаю эти инструкции, которые мне дали (или, по крайней мере, понимаю, как их выполнять).
Когда я набираю 10, выводится «10 из», но когда я пытаюсь набрать 10S
10 пик, выводится только «Пики».
Надеюсь, кто-нибудь здесь может дать мне либо решение, либо указать мне правильное направление в решении моей проблемы:
Используйте оператор SWITCH, чтобы присвоить переменной результата начальное значение — значение карты
Используйте второй оператор SWITCH для объединения с результирующей переменной масти карты «
вот код:
import java.util.*;
public class CardConverter {
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
//will hold string that user will input
String card, face, suit, resu<
//getting input from user and telling them correct format
System.out.println("Please enter either the number or face value intial of a card followed by the initial of it's suit (ie. QH for Queen of Hearts)");
card = keyboard.nextLine();
//gets first value
face = card.substring(0);
//sets substring for 10 only
//substring for after all single digit/letter card faces
suit = card.substring(1);
//to print face and word of
switch (face)
{
case "10":
System.out.println("10 of ");
break;
case "2":
System.out.println("2 of ");
break;
case "3":
System.out.println("3 of ");
break;
case "4":
System.out.println("4 of ");
break;
case "5":
System.out.println("5 of ");
break;
case "6":
System.out.println("6 of ");
break;
case "7":
System.out.println("7 of ");
break;
case "8":
System.out.println("8 of ");
break;
case "9":
System.out.println("9 of ");
break;
case "J":
System.out.println("Jack of ");
break;
case "Q":
System.out.println("Queen of ");
break;
case "K":
System.out.println("King of ");
break;
case "A":
System.out.println("Ace of ");
break;
}
//to print out card suit
switch (suit)
{
case "H":
System.out.println("Hearts");
break;
case "C":
System.out.println("Clubs");
break;
case "S":
System.out.println("Spades");
break;
case "D":
System.out.println("Diamonds");
break;
}
}
}
Комментарии:
1. Подсказка:
card.substring(0);
дает вам какое значение? Это что-нибудь в операторах case?
Ответ №1:
Ваша проблема начинается с card.substring(0);
, что равно card
, потому что подстрока из начала строки. Может быть, вы хотели card.charAt(0);
? Но это также неправильно, потому "10S"
что будет иметь три символа, два для номинального значения.
Вам нужно будет специально обрабатывать трехсимвольный ввод или быть умнее с substring
-ing .
Вы знаете, что масть всегда будет последним символом, поэтому используйте charAt
для этого длину строки to .
int suitIndex = s.length() - 1;
String suit = "" s.charAt(suitIndex);
String face = s.substring(0,suitIndex);
Вы также можете упростить случаи
case "J":
System.out.println("Jack of ");
break;
case "Q":
System.out.println("Queen of ");
break;
case "K":
System.out.println("King of ");
break;
case "A":
System.out.println("Ace of ");
break;
default:
System.out.println(face " of "); // handle all the numbers
break;
Комментарии:
1. Ваше предложение было на самом деле идеальным решением, большое спасибо