【问题标题】:Pangram, Perfect Pangram, NeitherPangram,完美的 Pangram,两者都不是
【发布时间】:2018-02-20 03:15:05
【问题描述】:

我应该从文本文件中读取并计算一个句子是 PANGRAM(使用字母表中的所有字符)、PERFECT pangram(使用字母表中的每个字符一次)还是两者都不是。 指南说我应该用'0'初始化x,然后遍历句子中的每个字母,如果字母与字母表中的字符匹配,我将x加1;那么最后,如果每个句子的值 x 有一个 '0',它就不是,如果它是所有 '1',它是 PERFECT,如果没有 '0',它是 PANGRAM。

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) 
        {   
        }
        }   
    }

输出应该是这样的:

PANGRAM:快速的棕色狐狸跳过懒狗。

两者都没有:您的所有基地都属于我们;有人给我们设了炸弹。 完美:新工作:修理格鲁克先生的朦胧电视,PDQ。

【问题讨论】:

  • 好的...你是否被困在家庭作业的某个特定方面?
  • 您需要重新学习大括号 ({}) 如何工作的课程,尤其是与 for 语句相关的课程。每个{ 都有一个匹配的},但据我所知,几乎没有一个}s 在正确的位置。

标签: java arrays split pangram


【解决方案1】:

我猜你完全错了。首先,您的计数器数组(零)被初始化为错误的长度。它的固定长度应该是 'Z'(90) - 'A'(65) + 1 = 26 和拉丁字母表中的字母数一样。然后你应该增加表示字符在字母表中位置的计数器数组的索引 (c - 'A'),但前提是字符是字母表的一部分 (c >= ' A' && c )。一旦你对句子中的每个符号都这样做了,你现在应该遍历零的成员,并找出它们中的任何一个是否低于 1:不是 pangram;或任何高于 1:不是完美的 pangram;

我将发布一些我的蹩脚代码只是为了演示它,但我不建议你把它作为你的最后作业;)我希望你掌握了基础知识,你现在可以自己做。

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");
    }
}

【讨论】:

    猜你喜欢
    • 2021-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-06
    相关资源
    最近更新 更多