Pangram Checker не работает

Это код, который я использовал, но он работает для строк, которые не являются панграммой, но не наоборот. Также для строк, которые имеют дубликаты.

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 ответ

Вы проверяете, если 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 prizes будет содержать только We поскольку пробел будет рассматриваться как "конечный знак" для next(), Вам нужно использовать sc.nextLine() вместо.

Другие вопросы по тегам