Панграмма, идеальная панграмма, ни

Я должен читать из текстового файла и вычислять, является ли предложение ПАНГРАММОЙ (использует все символы в алфавите), ИДЕАЛЬНОЙ панграммой (использует каждый символ в алфавите один раз) или НИКОГДА. Руководство говорит, что я должен инициализировать x с '0', затем пройти каждую букву в предложении, и если буква совпадает с символом в алфавите, я увеличиваю x на 1; затем в конце, если значение x для каждого предложения имеет значение "0", оно НИКОГДА, если это все "1", это ИДЕАЛЬНО, если нет "0", это ПАНГРАММА.

Scanner pangram = new Scanner ( 
PerfectPangram.class.getResourceAsStream ( "pangram.txt" ));
    while (pangram.hasNext())
    {
        String text = pangram.nextLine().toUpperCase();

        char [] alphabet = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};

        char txt[] = text.toCharArray();
        int zero[] = new int [text.length()];
        for(int i = 0; i < zero.length; i++)
        {
            zero[i] = 0;
        for (int a = 0; a < text.length(); a++) 
        {   
            zero[i] = txt[a];
        for (int array = 0; array < alphabet.length; array++) 
        {           
        if (alphabet[array] == text.charAt(i)) 
        {
            zero[i]++;              
        }
        }
        }
        if (zero[i] == 1) 
        {   
        }
        }   
    }

Вывод должен быть таким:

ПАНГРАММА: БЫСТРЫЕ КОРИЧНЕВЫЕ ЛИСЫ ПЫТАЮТ НА ЛЕНЮ СОБАКУ

НИ НИКОГДА: ВСЕ ВАШИ БАЗЫ ОТНОСЯТСЯ К НАМ; Кто-то настроил нас на бомбу. ИДЕАЛЬНО: НОВАЯ РАБОТА: FIX MR GLUCK'S HAZY TV, PDQ.

1 ответ

Вы все неправильно поняли, я думаю. Прежде всего ваш массив счетчиков (ноль) инициализируется с неправильной длиной. Его фиксированная длина должна быть "Z" (90) - "A" (65) + 1 = 26, как и количество букв в латинском алфавите. Затем следует увеличить индекс этого массива счетчиков, представляющего положение символов в алфавите (c - 'A'), но только если символ является частью алфавита (c> = 'A' && c <= 'Z'), После того, как вы сделаете это для каждого символа в предложении, вы должны выполнить итерацию по всем элементам нуля и найти, если какой-либо из них меньше 1: не панграмма; или любой выше 1: не идеальная панграмма;

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

public static void main(String[] args) {

    String test = "THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG.\nALL YOUR BASE ARE BELONG TO US; SOMEONE SET US UP THE BOMB.\nNEW JOB: FIX MR GLUCK'S HAZY TV, PDQ.";

    Scanner pangram = new Scanner (test);

    int zero[] = new int ['Z' - 'A' + 1];

    while (pangram.hasNextLine())
    {
        Arrays.fill(zero, 0);

        String text = pangram.nextLine().toUpperCase();

        for (char c : text.toCharArray())
        {
            if (c >= 'A' && c <= 'Z') {
                zero[c - 'A']++;
            }
        }

        boolean isPangram = true;
        boolean isPerfectPangram = true;

        for (int i : zero) {
            if (i < 0) {
                isPangram = false;
                break;
            }
            if (i > 1) {
                isPerfectPangram = false;
            }
        }

        System.out.println(isPerfectPangram ? "Prefect Pangram" : isPangram ? "Pangram" : "Neither");
    }
}
Другие вопросы по тегам