Java 即使在if-else语句之后,布尔变量也设置为true

Java 即使在if-else语句之后,布尔变量也设置为true,java,if-statement,boolean,Java,If Statement,Boolean,我正在为学校编写一个程序,读取SSA中的婴儿名字文件,并返回给定年份的名字数量统计数据 我在输出falsefoundboolean时遇到问题,这将允许我打印未找到给定名称 import java.util.*; import java.io.*; public class BabyNames{ public static void main(String []args) throws FileNotFoundException { File file =

我正在为学校编写一个程序,读取SSA中的婴儿名字文件,并返回给定年份的名字数量统计数据

我在输出false
found
boolean时遇到问题,这将允许我打印未找到给定名称

import java.util.*;
import java.io.*;
public class BabyNames{
    public static void main(String []args)
    throws FileNotFoundException
    {
        File file = new File ("babynames.txt");        
        Scanner input = new Scanner(file);
        Scanner console = new Scanner(System.in);
        int amount = 0;
        System.out.print("Name? ");
        String s1 = console.next();
        boolean found = true;

        while (input.hasNextLine()) {
            String line = input.nextLine();
            Scanner lineScan = new Scanner(line);
            String name  = lineScan.next();

            if(name.equals(s1)){
                found = true;

                for(int i = 1; i<= 11; i++) {
                    amount = lineScan.nextInt();
                    int k = amount / 20;                    
                    System.out.print((i * 10) + 1890 + ": ");
                    for(int r = 1; r <= k; r++) {
                        System.out.print("*");                        
                    }
                    System.out.println();
                }

            } else {
                found = false;
            }           
        }
        if(found = false){ //it never turns back into false
            System.out.println(s1 + " is not found.");
        }
        input.close();
    }
}
import java.util.*;
导入java.io.*;
公共类BabyNames{
公共静态void main(字符串[]args)
抛出FileNotFoundException
{
File File=新文件(“babynames.txt”);
扫描仪输入=新扫描仪(文件);
扫描仪控制台=新扫描仪(System.in);
整数金额=0;
系统输出打印(“名称”);
字符串s1=console.next();
布尔值=真;
while(input.hasNextLine()){
String line=input.nextLine();
扫描仪行扫描=新扫描仪(行);
字符串名称=lineScan.next();
if(名称等于(s1)){
发现=真;

对于(int i=1;i请检查您最后的
如果
。您的意思可能是:

if(found == false){ //it never turns back into false
    System.out.println(s1 + " is not found.");
}
但为了防止将来发生此类错误,您应该这样做:

if(!found){ //reads "if not found"
    System.out.println(s1 + " is not found.");
}

如果
,请检查您的最后一个
。您的意思可能是:

if(found == false){ //it never turns back into false
    System.out.println(s1 + " is not found.");
}
但为了防止将来发生此类错误,您应该这样做:

if(!found){ //reads "if not found"
    System.out.println(s1 + " is not found.");
}
if(found=false){
false
赋值给
found
,然后测试结果(结果总是
false
)。相等运算符是
=
,而不是
=
=/code>总是赋值

但是对于布尔变量,您基本上不需要
=
!=
。只需测试变量本身:

if (!found) {
if(found=false){
false
赋值给
found
,然后测试结果(结果总是
false
)。相等运算符是
=
,而不是
=
=/code>总是赋值

但是对于布尔变量,您基本上不需要
=
!=
。只需测试变量本身:

if (!found) {

这就是为什么你不应该把布尔值与真值或假值进行比较的原因。所以,考虑一下如果(找到)做了。这就是你永远不应该把布尔值和真值或假值进行比较的原因。。即使在这之后,逻辑仍然存在严重缺陷。对find的值的检查只检查最后一个输入行-它的值对于所有其他输入行都被忽略。熟悉IDE的调试器应该会有很大帮助。您会发现
find
每次都变为
false
)即使在那之后,逻辑仍然存在严重缺陷。对find的值的检查只检查最后一个输入行-它的值对于所有其他输入行都被忽略。熟悉IDE的调试器应该会有很大帮助。您会发现,
find
每次都变为
false