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