Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么对于';a';当它存在于字符串中时,我将其作为输入传递(输入为“敏捷的棕色狐狸跳过懒狗”)_Java_String - Fatal编程技术网

Java 为什么对于';a';当它存在于字符串中时,我将其作为输入传递(输入为“敏捷的棕色狐狸跳过懒狗”)

Java 为什么对于';a';当它存在于字符串中时,我将其作为输入传递(输入为“敏捷的棕色狐狸跳过懒狗”),java,string,Java,String,当“a”存在于作为输入传递的字符串中时(输入为“快速棕色狐狸跳过懒狗”),为什么返回false import java.util.*; 导入java.io.*; 公共班机 { 公共静态void main(字符串args[])引发IOException { 扫描仪sc=新的扫描仪(System.in); 字符串s=sc.next(); int len=s.length(); int i; 字符c; 布尔值arr[]=新布尔值[26]; 对于(i=0;i字符串s=sc.next();行仅用初始化s。

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

import java.util.*;
导入java.io.*;
公共班机
{
公共静态void main(字符串args[])引发IOException
{
扫描仪sc=新的扫描仪(System.in);
字符串s=sc.next();
int len=s.length();
int i;
字符c;
布尔值arr[]=新布尔值[26];
对于(i=0;i字符串s=sc.next();
行仅用
初始化
s
。由于
中不包含
a
,因此
成功
为false

如果计划检查整行,则应将
String s=sc.next();
更改为
String s=sc.nextLine();

但是,您的第一个
for
循环将在找到空间后停止代码执行。您需要删除它。另外,第二个
for
循环似乎做了过多和无意义的工作,因为
s.replace(“,”)
不会修改
s
(字符串在Java中是不可变的)。只需使用
s=s.replace(“,”)
从输入中删除空格


请参见打印
Special

它只读取单词“the”,而不包含“a”。您需要读取整个字符串以检查整个内容。如果需要整行内容,请不要使用“sc.next()”,请使用“sc.nextLine()“

很明显,
不包含
a
,因此您的
成功
为假。您会期望什么?您的
s
等于
。还有其他问题,如
s.replace(“,”);
,但您似乎只是希望扫描器读取整行,而不仅仅是第一个非空白标记,对吗?请尝试调试器或一些位置良好的
System.out.println()
语句。这可能是一个骗局:(因为OP会在阅读答案后理解他的问题)实际上,这里的问题比
next()更多
。您的问题标题需要做一些工作。请尝试以一般方式描述您的问题,而不是简单地复制完整和特定的描述,例如“使用java.util.Scanner时无法在流中找到字符”。想想你在看哪一类问题,以及有类似问题的人可能会搜索什么。他需要将它从检查下一个for循环中是否是字母改为检查,实际上,因为空格不是字母
    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");
       }
   }