java
  • pangram
  • 2016-08-28 3 views -4 likes 
    -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"); 
    

    答えて

    0

    lがループした後zに等しい場合は、チェックしています。 文の中にzを除くすべての文字がある場合、lzに等しくなるため、偽陽性となります。

    ここでは、各ループのためlをインクリメント:

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

    を最後にループした後(lが等しいときzlは、1つのより多くの時間を増加します。

    lzより大きいかどうかを確認する必要があります。

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

    編集

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

    +0

    まだ動作していません。私のテストケースは「私たちはすぐに次の賞品のアンティークアイボリーバックルを判断しました」です。これはパングラム文字列ですが、私のプログラムはパングラムではありません。 –

    +0

    おそらく、あなたが 'sc.nextLine()'の代わりに 'sc.next()'を使っているからでしょう。 'next()'は文字列を次のトークンに返します。このトークンは空白文字です。だから 's'は' We'と等しくなります。代わりに 'nextLine()'を使用してください。 –

    関連する問題