Моля, някои да погледнат кода ми, че не ми е ясно защо Judge не ми дава 100 точки тук.
Note 1: Видях различни решения и бих се равал ако някои да ми кажат какво съм пропуснал в собствения си код.
Note 2: Пробвах да се принтира и с char символи за всяка карта, и без тях както е в текущото ми решение - не става.
кодът:
Благодаря предварително!
ЗАДАЧА:
Print Deck of Cards
Description
Write a program that reads a card sign(as a string ) from the console and generates and prints all possible cards from a standard deck of 52 cards up to the card with the given sign(without the jokers). The cards should be printed using the classical notation (like 5 of spades, A of hearts, 9 of clubs; and K of diamonds).
The card faces should start from 2 to A ( 10 is 10).
Print each card face in its four possible suits: clubs , diamonds , hearts and spades .
Input
On the only line, you will receive the sign of the card to which, including, you should print the cards in the deck.
Output
The output should follow the format bellow(assume our input is 5 ):
2 of spades, 2 of clubs, 2 of hearts, 2 of diamonds
3 of spades, 3 of clubs, 3 of hearts, 3 of diamonds
...
5 of spades, 5 of clubs, 5 of hearts, 5 of diamonds
Constraints
The input character will always be a valid card sign.
Sample tests
Input
Output
5
2 of spades, 2 of clubs, 2 of hearts, 2 of diamonds
3 of spades, 3 of clubs, 3 of hearts, 3 of diamonds
…
5 of spades, 5 of clubs, 5 of hearts, 5 of diamonds|
Здравей,
Според мен грешката ти е че четеш инпута като int, а не като String както е по условие - така пропускаш случаите когато card faces са J, Q, K и A
Поздрави,
да, така е защото ти се опитваш да парснеш стринг, който не винаги е валиден за парсване към int - когато е J, Q, K и A няма как да го парснеш.
Опитай се да преработиш първата част от кода - аз например си създавам в началото една променлива int number = 0; и съм използвала switch case - имам толкова случаи, колкото различни инпута може да има: от 2 до 10 + още 4 когато инпутът е J, Q, K или A. После за всеки от тези случаи давам стойност на number от 1 до 13. После мисля че лесно ще се ориентираш …
Разбира се, може да започнеш и от 2 до 14 - както намериш за добре
Няма ниkoга да влезеш в този if на ред 31: if (times > 10){
Защото няма да ти подадат примерно “13”, ами “Q” :
Input: Q
Output:
2 of spades, 2 of clubs, 2 of hearts, 2 of diamonds
3 of spades, 3 of clubs, 3 of hearts, 3 of diamonds
...
J of spades, J of clubs, J of hearts, J of diamonds
Q of spades, Q of clubs, Q of hearts, Q of diamonds
Ето, че и аз блокирах на тази задача.
С масиви, както колегата е писал, се обърквам още повече и е по-зле, затова ползвам само loop и се справям с цифрите, но идея си нямам как да остана да ползвам String, защото тогава ще изгубя възможността за събиране, ако пък ползвам int, както е по-долу не знам как да въведа възможността inputa да е String например “А”
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String cardSign = scanner.nextLine();
int card = Integer.parseInt(cardSign);
for (int i = 2; i <= card; i++) {
System.out.printf("%d of spades, %d of clubs, %d of hearts, %d of diamonds%n", i, i, i, i);
}
}
}
Здравей,
а защо да не направиш така, инпута да е само String.
после, проверяваш дали input.equalsTo(“A”) || equalsTo “Q” и т н,
и ако инпута не е буква - парсваш инпута в integer и ги принтираш от N-integer до края на колодата.
Поздрави,
Опитах по този начин, но така, ако е буква, не мога да го свържа с int loopa, тоест мога да изпринтя за буквата, но губя числата. Не успявам да ги свържа двете.
Успях…и съм много доволен да споделя.
Върнах се след няколко часа към задачата и в 47 реда 100/100 с loop, switch и if.
Сега, когато ми пусна да видя най-добрите решения в judge, виждам едно много смислено с масив от String и switch, дано един ден да ми хрумват такива неща