Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.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中的布尔值赋值_Java_Boolean - Fatal编程技术网

Java中的布尔值赋值

Java中的布尔值赋值,java,boolean,Java,Boolean,对于noob的全部问题,我深表歉意,但是有人能解释一下在for each循环使用以下方法完成后,match的值发生了什么变化吗 尝试编译时会产生警告:变量匹配可能尚未初始化 public void listMatching(String searchString) { boolean match; for(String filename : files) { if(filename.contains(searchString)) { System.out.println

对于noob的全部问题,我深表歉意,但是有人能解释一下在for each循环使用以下方法完成后,
match
的值发生了什么变化吗

尝试编译时会产生警告:
变量匹配可能尚未初始化

public void listMatching(String searchString) {
boolean match;

for(String filename : files) {
    if(filename.contains(searchString)) {
        System.out.println(filename);
        match = true;
    }
    else {
        match = false;
    }
}

if(match == false) {
    System.out.println("No matches found for " + searchString);
}
}

首先需要定义
布尔匹配=false

此外,一旦找到匹配项,您需要中断循环,其他明智的
match
状态将被忽略

 if(filename.contains(searchString)) {
        System.out.println(filename);
        match = true;
        break;
    } // this wil help whether a match is found or not
如果您对查找匹配数感兴趣 int计数器=0; if(filename.contains(searchString)){ System.out.println(文件名); 匹配=真; 计数器++; }//这将有助于查找匹配数

最后
System.out.println(“与“+searchString+”:“+counter”的匹配数)

  • 当你找到你的对手时,你需要打破循环

  • 你需要初始化你找到的变量,你也不能运行你的循环,然后你的if条件会查看一个未初始化的变量,这就是你的编译器想要告诉你的


  • 将变量初始化为false以避免程序中出现警告

    此外,
    match
    是一个单一变量,根据不同文件的内容(搜索相同字符串),您将为同一变量指定true或false


    match
    的最后一个布尔值只是在文件列表的最后一个文件中搜索字符串的结果

    这里有一个修复程序,它可以满足您的要求:

    public void listMatching(String searchString) {
        boolean match = false; // initialize local variable
        for(String filename : files) {
            if(filename.contains(searchString)) {
                System.out.println(filename);
                match = true;
            }
        }
        if(!match) { // same as 'match == false', just without comparison
            System.out.println("No matches found for " + searchString);
        }
    }
    
    必须初始化局部变量。只有字段才能获得其类型的默认值


    如果在
    else
    块中重新将
    match
    赋值给
    false
    ,则循环后将
    false
    ,即使包含
    searchString
    的每个
    filename
    中都包含
    searchString
    ,但最后一个除外。

    可能是files数组为空,因此您应该为match变量设置默认值

    boolean match=false;
    
    for(String filename : files) {
        if(filename.contains(searchString)) {
            System.out.println(filename);
            match = true;
            break;
        }
    }
    
    如果您需要检查所有文件是否具有此搜索字符串,您可以使用以下代码:

    boolean match=files.lenght!=0;
    
    for(String filename : files) {
        if(!filename.contains(searchString)) {
            System.out.println(filename);
            match = false;
            break;
        }
    }
    

    应向布尔值添加初始值以消除警告。布尔匹配=假;此外,在设置匹配项时,还需要添加break语句。@Drogba:notcan,haveto;)我认为他试图列出所有匹配的文件,如果没有找到匹配项,则只打印
    未找到的匹配项。您应该澄清,
    计数器必须在循环外初始化。我认为他试图列出所有匹配的文件,由于
    中断
    ,这将不起作用。因此,应使用此代码段:
    布尔匹配=files.lenght=0;和循环中的'if(!filename.contains(searchString))match=false`没有人喜欢阅读注释中的代码;)您可以随时编辑您的答案:)非常感谢!我从你的编辑中学到了很多东西!完成!再次感谢你的帮助。