当它作为输入传递的字符串中存在时,为什么这对'a'返回false(输入是“快速的棕色狐狸跳过懒狗”)

时间:2016-09-12 07:20:40

标签: java string

为什么当它作为输入传递的字符串中存在时,它为'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");
       }
   }  

2 个答案:

答案 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;