Панграмма, идеальная панграмма, ни
Я должен читать из текстового файла и вычислять, является ли предложение ПАНГРАММОЙ (использует все символы в алфавите), ИДЕАЛЬНОЙ панграммой (использует каждый символ в алфавите один раз) или НИКОГДА. Руководство говорит, что я должен инициализировать 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");
}
}