-4

これは私が使用しているコードですが、パングラムではなく、他の方法ではない文字列に対して機能しています。重複している文字列にも。

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

1 に答える 1

0

ループ後にl等しいかどうかを確認しています。zを除くすべての文字が文に存在する場合、z次のようになるため、誤検知が発生します。lz

ここでlは、ループごとにインクリメントします。

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

最後のループの後 ( lequalsの場合z)lはもう一度インクリメントされます。

あなたがする必要があるのは、lが より大きいかどうかを確認することですz

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

編集

sc.next()次のトークンに文字列を返します。(行末または空白)
入力した場合は、スペースは の「終了トークン」と見なされるため、We promptly judged antique ivory buckles for the next prize s含むだけです。代わりに使用する必要があります。Wenext()sc.nextLine()

于 2016-08-28T20:32:43.697 に答える