为什么当它作为输入传递的字符串中存在时,它为'a'返回false(输入是“快速的棕色狐狸跳过懒狗”)
import java.util.*;
import java.io.*;
public class Main
{
public static void main(String args[])throws IOException
{
Scanner sc=new Scanner(System.in);
String s=sc.next();
int len=s.length();
int i;
char c;
boolean arr[] = new boolean[26];
for(i=0;i<len;i++)
{
c = s.charAt(i);
if(Character.isLetter(c))
{
continue;
}
else
{
System.out.println("Invalid Input");
System.exit(1);
}
}
for(i=0;i<len;i++)
{
if(s.charAt(i)==' ')
{
s.replace(" ","");
}
}
boolean success = true;
for(c = 'a';c <= 'z'; c++)
{
//System.out.println(String.valueOf(c));
if(!s.contains(String.valueOf(c)))
{
System.out.println(String.valueOf(c));
success = false;
break;
}
}
if(success)
{
System.out.println("Special");
}
else System.out.println("Not Special");
}
}
答案 0 :(得分:0)
String s=sc.next();
行仅使用s
初始化the
。由于the
不包含a
,因此您将success
视为 false 。
如果您打算查看整个行,则应将String s=sc.next();
更改为String s=sc.nextLine();
。
但是,一旦找到空格,您的第一个for
循环将停止代码执行。你需要删除它。此外,第二个for
循环似乎做了过多而毫无意义的工作,因为s.replace(" ","")
不会修改s
(字符串在Java中是不可变的)。只需使用s = s.replace(" ", "")
从输入中删除空格。
请参阅this Java demo打印Special
。
答案 1 :(得分:0)
只读“&#39;”这个词并没有包含&#39; a&#39;。你需要读入整个字符串来检查整个事情。如果您想要整行,请不要使用&#39; sc.next()&#39;,请使用&#39; sc.nextLine()&#39;