这是我一直在使用的代码,但它适用于不是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");
答案 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()
。