Java中的布尔值赋值
对于noob的全部问题,我深表歉意,但是有人能解释一下在for each循环使用以下方法完成后,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
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`没有人喜欢阅读注释中的代码;)您可以随时编辑您的答案:)非常感谢!我从你的编辑中学到了很多东西!完成!再次感谢你的帮助。