чтение карт и добавление очков

1

Я новичок, и у меня возникают проблемы с структурированием решения для моего нового задания. Я не могу понять, как добавить очки, основанные на количестве карточек в костюме, который является частью пустоты, одинарной и двойниковой частей вопроса. Я разместил здесь все вопросы. Может кто-нибудь, пожалуйста, дать мне некоторые идеи? Я буду благодарен.

В карточной игре каждая рука игрока состоит из 13 карт. Каждая рука имеет общее значение точки, определяемое количеством карт, которые имеют значение точки. Карты, на которые стоит обратить внимание, - туз (4 балла), король (3 балла), королева (2 очка) и Джек (1 балл). Другие карты (2, 3, 4, 5, 6, 7, 8, 9, 10) не имеют точечного значения. Есть четыре карты каждого типа, по одному в каждом из четырех костюмов. Костюмы называются клубами (C), бриллиантами (D), сердцами (H) и пиками (S). Кроме того, очки назначаются для каждого костюма, который имеет пустоту (3 балла), одиночный (2 балла) или двойной (1 балл). Пустота в костюме означает, что нет карт этого костюма (например, руки без лопат). Синглтон в костюме означает, что в этом костюме есть только одна карта (например, рука с одним алмазом). Двойной в костюме означает, что в этом костюме есть только две карты. Напишите программу для чтения набора из тринадцати карт в виде строки, затем оцените количество очков в руке. Костюмы появятся в алфавитном порядке. В каждом костюме не будет дубликатов карт. Результатом будет рука и значение точки, показанное в виде таблицы, как показано ниже. Ваш выход должен отображать карты в том же порядке, что и вход. Обратите внимание, что 10 представлен символом T как на входе, так и на выходе. Вход с клавиатуры, вывод на экран.

Пример сеанса

Enter cards:
C258TJKD69QAHSTJA

Cards Dealt     Points
Clubs 2 5 8 T J K   4
Diamonds 6 9 Q A    6
Hearts              3
Spades T J A        5
            Total  18

это то, что я сделал до сих пор: я не могу понять, как разбить мой вклад в индивидуальные костюмы, чтобы я мог подсчитать количество карточек в каждом номере и добавить к ним очки. Любая помощь будет оценена

  for (int i=0; i<cards.length(); i++) {
        letter= cards.substring(i,i+1);

        if (letter.equals("C")) {
            System.out.print("\nClub");
            total= total + points;
            points=0;
        }

        else if (letter.equals("D")) {
            System.out.print("\nDiamonds");
            total= total + points;
            points=0;
        }

        else if (letter.equals("H")) {
            System.out.print("\nHearts");
            total= total + points;
            points=0;
        }

        else if (letter.equalsIgnoreCase("S")) {
            System.out.print("\nSpades");
            total= total + points;
            points=0;
        }

        else if (letter.equalsIgnoreCase("K")) {
            points=points+3;
            System.out.print(" K");
        }

        else if (letter.equalsIgnoreCase("A")) {
            points=points+4;
            System.out.print(" A");
        }

        else if (letter.equalsIgnoreCase("Q")) {
            points=points+2;
            System.out.print(" Q");
        }

        else if (letter.equalsIgnoreCase("J")) {
            points++;
            System.out.print(" J");
        }

        else {
            System.out.print(" " + letter);
        }
    }
   total=total+points;
   System.out.println("\nGrand total\t" + total);
}

}}

Теги:
split
add

1 ответ

1

В реальной жизни вы никогда не получите столь же хороший набор спецификаций, как в классе кодирования.

Возьмите описание проблемы и разбейте ее на отдельные предложения и подумайте о том, что вам нужно сделать, чтобы удовлетворить каждое индивидуальное предложение.

В карточной игре каждая рука игрока состоит из 13 карт.

Хорошо, нам нужно предоставить хранилище для 13 карт. Список, вероятно, будет достаточным.

Каждая рука имеет общее значение точки, определяемое количеством карт, которые имеют значение точки.

Хорошо, нам придется вычислять значения точек. Похоже, какая-то математика будет задействована.

Карты, на которые стоит обратить внимание, - туз (4 балла), король (3 балла), королева (2 очка) и Джек (1 балл). Другие карты (2, 3, 4, 5, 6, 7, 8, 9, 10) не имеют точечного значения.

Хорошо, нам придется ассоциировать карты с очками. Карта, вероятно, будет достаточной.

Есть четыре карты каждого типа, по одному в каждом из четырех костюмов. Костюмы называются клубами (C), бриллиантами (D), сердцами (H) и пиками (S).

Хорошо, это колода игральных карт. Я знаком с колодой игральных карт.

Кроме того, очки назначаются для каждого костюма, который имеет пустоту (3 балла), одиночный (2 балла) или двойной (1 балл). Пустота в костюме означает, что нет карт этого костюма (например, руки без лопат). Синглтон в костюме означает, что в этом костюме есть только одна карта (например, рука с одним алмазом). Двойной в костюме означает, что в этом костюме есть только две карты.

Эй, это немного сложнее. Как насчет того, чтобы удовлетворить остальные требования, и тогда я могу вернуться к этому.

Прямо сейчас, похоже, мне придется пройти через этот список карт и проверить эти условия.

Напишите программу для чтения набора из тринадцати карт в виде строки, затем оцените количество очков в руке. Костюмы появятся в алфавитном порядке. В каждом костюме не будет дубликатов карт.

Хорошо, у меня будет специальный ввод String, который мне придется разбить на отдельные карты. Может быть, я должен написать класс карты, чтобы сохранить ценность и костюм.

Результатом будет рука и значение точки, показанное в виде таблицы, как показано ниже. Ваш выход должен отображать карты в том же порядке, что и вход. Обратите внимание, что 10 представлен символом T как на входе, так и на выходе.

Хорошо, я знаю, как должен выглядеть вывод. Мне лучше быть осторожным с T (10). Я определенно должен использовать список для хранения экземпляров карты, так как я должен поддерживать порядок ввода.

Вход с клавиатуры, вывод на экран.

Я могу использовать Scanner для ввода и System.out для вывода. Я знаю, как это сделать.

Я не могу дождаться начала!

И вот как вы разложите проблему на достаточно маленькие шаги, чтобы решить эту проблему. Удачи.

  • 0
    У меня есть все, кроме как посчитать количество карт в комплекте. Вот где я запутался
  • 0
    Выполните итерацию по списку и посчитайте экземпляры карты с определенным набором.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню