我应该从文本文件中读取并判断句子是否是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。
答案 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");
}
}