0
import java.io.*;
import java.util.*;


public class Solution {

    public static final int n = 26; 

    public int check(String arr) {
        if (arr.length() < n) {
           return -1;
        }
        for (char c = 'A'; c <= 'Z'; c++) {
            if ((arr.indexOf(c) < 0) && (arr.indexOf((char)(c + 32)) < 0)) {
               return -1;
            }
        }
        return 1;
    }  
}

public static void main(String[] args) {
    Scanner s1 = new Scanner(System.in);
    String s = s1.next();
    Solution obj = new Solution();

    int d = obj.check(s);

    if (d == -1) {
        System.out.print("not pangram");
    } else {
        System.out.print("pangram");
    }
}

入力された文字列が
次の賞品のアンティーク アイボリー バックルをすぐに判断した場合

間違った出力が得られます:
not pangram

コードの何が問題なのかを見つけることができません。
前もって感謝します!

4

16 に答える 16

6

別のバージョン:

import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;

public class Solution {

    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);
        String sentence = scan.nextLine();
        sentence = sentence.toUpperCase();
        sentence = sentence.replaceAll("[^A-Z]", "");

        char[] chars = sentence.toCharArray();

        Set<Character> set = new HashSet<Character>();

        for( int i = 0; i < chars.length; i++ ) set.add(chars[i]);

        System.out.println(set.size() == 26 ? "pangram" : "not pangram");

    }
}
于 2016-06-29T11:21:23.123 に答える
6
May be program by using set will make solution easier ..:)


import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.Set;

public class Pangram {

public static void main(String args[]) {

    try {
        final String str;
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        str = br.readLine().toLowerCase().replaceAll(" ", "");

        char[] chars = str.toCharArray();
        final Set set = new HashSet();

        for(char c: chars){
            set.add(c);
        }

        System.out.println(set.size());
        if(set.size() == 26)
           System.out.println("pangram");
        else
            System.out.println("not pangram");

    } catch (Exception e) {
        e.printStackTrace();
    }

}

}

于 2015-09-12T13:32:10.923 に答える
6

問題は、空白が の区切り文字であることですScanner.next()。したがって、 を入力するとWe promptly judged antique ivory buckles for the next prizesは文字列のみを指しますWe。呼び出すobj.check(s)We、 が返され-1ます。

これが事実であることを確認するには、sその値を印刷して確認します。次のこともできます。

String s = "We promptly judged antique ivory buckles for the next prize";

呼び出しobj.check(s)て、正しい答えが返されることを確認します。

それを修正するには、Scanner.nextLine()代わりに呼び出す必要がありますScanner.next():

String s = s1.nextLine();
于 2015-03-20T18:44:37.577 に答える
1

あなたの問題に対する別の同様の解決策。

 public class PangramExample {  

      public static void main(String[] args) {  
           String s = "The quick brown fox jumps over the lazy dog";  
           System.out.println("Is given String Pangram ? : "  
                     + isPangramString(s.toLowerCase()));  
      }  
      private static boolean isPangramString(String s) {  
           if (s.length() < 26)  
                return false;  
           else {  
                for (char ch = 'a'; ch <= 'z'; ch++) {  
                     if (s.indexOf(ch) < 0) {  
                          return false;  
                     }  
                }  
           }  
           return true;  
      }  
 }  

参考までに、このリンクを参照してくださいhttp://techno-terminal.blogspot.in/2015/11/java-program-to-check-if-given-string.html

于 2015-11-17T08:54:03.117 に答える
0
import java.util.Scanner;

public class Pangram {

    public static void main(String[] args) {
    int count=0;//Initialize counter to zero
    char[] arr = new char[26];//Character array of 26 size as there are 26 alphabets
    Scanner sc = new Scanner(System.in);
    String s = sc.nextLine();

    for(int i= 0; i<s.length();i++)
    {
        if(s.charAt(i)>=65 && s.charAt(i)<=90)//Ascii value of A to Z(caps)
        {
            if(arr[s.charAt(i)-65]==0)
            {
                count++;
                arr[s.charAt(i)-65]=1;
            }   
        }

        if(s.charAt(i)>=97 && s.charAt(i)<=122)//Ascii value of a to z
        {
            if(arr[s.charAt(i)-97]==0)
            {
                count++;
                arr[s.charAt(i)-97]=1;
            }

        }
    }

    System.out.println(count);

    if(count==26)
    {
        System.out.println("Pangram");
    }
    else
        System.out.println("not Pangram");
    }

}
于 2016-02-21T21:33:18.660 に答える
0
import java.util.Scanner;

public class Pangrams {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();
        int[] a = new int[26];
        int count =0;
        for(int i=0;i<s.length();i++){
            if(s.charAt(i)>=65 && s.charAt(i)<=90){
                if(a[s.charAt(i)-65]==0)
                    count++;
                a[s.charAt(i)-65]++;
            }
            else if(s.charAt(i)>=97 && s.charAt(i)<=122){
                if(a[s.charAt(i)-97]==0)
                    count++;
                a[s.charAt(i)-97]++;
            }
        }
        if(count==26)
            System.out.println("pangram");
        else
            System.out.println("not pangram");
    }

}
于 2015-07-29T15:21:02.533 に答える
0

HashSet コレクションを使用した別の単純なプログラム。

import java.util.HashSet;

public class Panagram {

    public static void main(String[] args) {
        pangrams("qmExzBIJmdELxyOFWv LOCmefk TwPhargKSPEqSxzveiun");
    }

    static String pangrams(String s) {

        String inputString = s.toLowerCase();

        HashSet<String> toRemoveDuplicates = new HashSet<String>();
        for (String eachAlphabet : inputString.split("")) {
            toRemoveDuplicates.add(eachAlphabet);
        }

        // Total alphabets are 26 + one space, so 27.
        if (toRemoveDuplicates.size() == 27) 
            return "panagram";
         else 
            return "not panagram";
    }
}
于 2018-12-07T06:19:36.917 に答える
0

それを試してみてください

static String pangrams(String s) {

    String result="";
    String ls = s.toLowerCase();
    HashSet<Character> ts=new HashSet<Character>(); 
    for(int i=0;i<ls.length();i++){
        if(ls.charAt(i)!=' '){
            ts.add(ls.charAt(i));
        }
    }
    if(ts.size()==26){
        result="pangram";
    }
    else{
        result="not pangram";
    }
    return result;
}
于 2018-06-26T14:26:09.593 に答える
0

これで修正されるはずです:

import java.io.*;        
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;

public class Solution {

        public static boolean isPangram(String test){
            for (char a = 'A'; a <= 'Z'; a++)
                if ((test.indexOf(a) < 0) && (test.indexOf((char)(a + 32)) < 0))
                    return false;
            return true;
        }

        public static void main(String[] args)throws IOException {
            /* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */
           BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            String test=br.readLine();
            if(isPangram(test.toUpperCase())){

                System.out.println("pangram");

            }if(isPangram(test.toUpperCase())==false){

                System.out.println("not pangram");

            }
        }
    }
于 2015-12-13T08:05:04.373 に答える
0
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;

public class Solution {

    public static void main(String[] args) {

        String s;
        char f;
         Scanner in = new Scanner(System.in);
        s = in.nextLine();

        char[] charArray = s.toLowerCase().toCharArray();
        final Set set = new HashSet();

        for (char a : charArray) {
            if ((int) a >= 97 && (int) a <= 122) {
                f = a;
                set.add(f);
            }

        }
        if (set.size() == 26){
            System.out.println("pangram");
        }
        else {
            System.out.println("not pangram");
        }
    }
}
于 2015-12-13T09:31:39.573 に答える
-1

ここでは、より直接的なアプローチを示します。また、文字の繰り返し、スペースの数、タブなどすべてが考慮されます。実際にリアルタイムの文章でワークアウトできます。また、あなたが初心者の場合、このコードを理解するのが難しいとは思わないでしょう (そう願っています) :)

import java.io.*;
import java.util.*;

public class Solution{

    static boolean check(String str){

        str=str.toUpperCase();
        int count=0;
        for(char c='A';c<='Z';c++){
            if( (str.indexOf(c)>=0) )
                count++;
        }
        if(count ==26)
            return true;
        else
            return false;
    }

    public static void main(String args[]){

        Scanner scan=new Scanner(System.in);
        String s=scan.nextLine();
        if(check(s))
            System.out.println("pangram");
        else
            System.out.println("not pangram");

    }
}
于 2016-07-13T09:05:18.600 に答える