Pangram Checker不工作

时间:2016-08-28 20:27:59

标签: java pangram

这是我一直在使用的代码,但它适用于不是pangram而不是其他方式的字符串。也适用于有重复的字符串。

int i;
char l,ch;
String s="";
Scanner sc= new Scanner(System.in);
s=sc.next();
s=s.trim();
int c=0;
s=s.toLowerCase();
for (l='a';l<='z';l++) {
  for(i=0;i<s.length();i++) {
    ch=s.charAt(i);
    if(ch==l) {
      c++;
    }
  }
  if(c==0)
    break;
  else {
    c=0;
    continue;
  }
}
if(l=='z')
  System.out.println("pangram");
else
  System.out.println("not pangram");

1 个答案:

答案 0 :(得分:0)

您在循环后检查l是否等于z。 如果句子中出现除z之外的所有字母,那么您会得到误报,因为l将等于z

在这里,您为每个循环增加l

for (l='a'; l<='z'; l++)

在最后一次循环之后(当l等于z时)l将再次增加。

您需要做的是检查l是否大于z

if (l > 'z')
  System.out.println("pangram");
...

修改

sc.next()会将字符串返回到下一个标记。 (行尾或空格)
如果您输入We promptly judged antique ivory buckles for the next prize s,则只会包含We,因为空格将被视为next()的“结束标记”。您需要改为使用sc.nextLine()