Pangram,Perfect Pangram,都不是

时间:2018-02-20 03:15:06

标签: java arrays split pangram

我应该从文本文件中读取并判断句子是否是PANGRAM(使用字母表中的所有字符),完美的pangram(使用字母表中的每个字符一次),或者NEITHER。 指南说我应该用'0'初始化x,然后遍历句子中的每个字母,如果字母与字母表中的字符匹配,我将x递增1;然后在最后,如果每个句子的值x都为'0',那么它是NEITHER,如果它全部为'1',它是完美的,如果没有'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:懒散的狗身上快速的棕色狐狸。

没有:你的所有基地都属于美国;有人设置了炸弹。 完美:新工作:修复MR GLUCK的HAZY TV,PDQ。

1 个答案:

答案 0 :(得分:0)

我猜你错了。首先,您的计数器数组(零)初始化为错误的长度。它的固定长度应该是&#39;(&#39;(90) - &#39;(&#39;(65)+ 1 = 26 ,这是拉丁字母中字母的数量。然后你应该增加表示字母表中字符位置的那个计数器数组的索引( c - &#39; A&#39; ),但前提是该字符是字母表的一部分( c&gt; =&#39; A&#39;&amp;&amp; c&lt; =&#39; Z&#39; )。一旦你为一个句子中的每个符号执行此操作,现在应该遍历零成员并查找它们中的任何一个是否低于1:不是pangram;或者任何高于1:不是一个完美的pangram;

我会发布我的一些蹩脚的代码只是为了证明它,但我不会建议你把它作为你最后的作业;)我希望你得到基础知识,你现在可以自己做。< / p>

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