2

我正在尝试进行布尔测试,以便如果其中一个轮胎压力低于 35 或超过 45,系统会输出“充气不良”。

在我的课堂上,我必须使用布尔值,这是我尝试过的。然而,返回的布尔值始终为真。我不明白为什么。

public class tirePressure
{
    private static double getDoubleSystem1 ()  //Private routine to simply read a double in from the command line
    {
        String myInput1 = null; //Store the string that is read form the command line
        double numInput1 = 0;      //Used to store the converted string into an double
        BufferedReader mySystem; //Buffer to store input
        mySystem = new BufferedReader (new InputStreamReader (System.in)); // creates a connection to system files or cmd
        try
        {
            myInput1 = mySystem.readLine (); //reads in data from console
            myInput1 = myInput1.trim (); //trim command cuts off unneccesary inputs
        }
        catch (IOException e)  //checks for errors
        {
            System.out.println ("IOException: " + e);
            return -1;
        }

        numInput1 = Double.parseDouble (myInput1); //converts the string to an double
        return numInput1;                       //return double value to main program
    }

    static public void main (String[] args)
    {
        double TireFR; //double to store input from console
        double TireFL;
        double TireBR;
        double TireBL;
        boolean goodPressure;
        goodPressure = false;

        System.out.println ("Tire Pressure Checker");
        System.out.println (" ");

        System.out.print ("Enter pressure of front left tire:");
        TireFL = getDoubleSystem1 ();    //read in an double from the user

        if (TireFL < 35 || TireFL > 45)
        {
            System.out.println ("Pressure out of range");
            goodPressure = false;
        }

        System.out.print ("Enter pressure of front right tire:");
        TireFR = getDoubleSystem1 ();    //read in an double from the user

        if (TireFR < 35 || TireFR > 45)
        {
            System.out.println ("Pressure out of range");
            goodPressure = false;

        }

        if (TireFL == TireFR)
            System.out.print (" ");
        else
            System.out.println ("Front tire pressures do not match");
        System.out.println (" ");

        System.out.print ("Enter pressure of back left tire:");
        TireBL = getDoubleSystem1 ();    //read in an double from the user

        if (TireBL < 35 || TireBL > 45)
        {
            System.out.println ("Pressure out of range");
            goodPressure = false;
        }

        System.out.print ("Enter pressure of back right tire:");
        TireBR = getDoubleSystem1 ();    //read in an double from the user

        if (TireBR < 35 || TireBR > 45)
        {
            System.out.println ("Pressure out of range");
            goodPressure = false;
        }

        if (TireBL == TireBR)
            System.out.print (" ");
        else
            System.out.println ("Back tire pressures do not match");

        if (goodPressure = true)
            System.out.println ("Inflation is OK.");
        else
            System.out.println ("Inflation is BAD.");

        System.out.println (goodPressure);


    } //mainmethod
} // tirePressure Class
4

6 回答 6

15
    if (goodPressure = true)

将其更改为:

    if (goodPressure == true)

甚至更好:

    if (goodPressure)

布尔比较运算符是==and !=。是=赋值运算符。

此外,您需要goodPressure = true;在检查违规条件之前进行初始设置。

于 2010-03-12T01:10:52.890 回答
1

您将 goodPressure 初始化为 false,但从不指定 true,因此它始终为 false。尝试将其初始化为 true。

于 2010-03-12T01:12:31.720 回答
0

看起来您从未将 goodPressure 设置为 true。也许您想从将其设置为 true 开始,因为看起来您的条件会在必要时将其设置为 false。

另外,我认为这一行应该引发编译器警告(或错误?)

if (goodPressure = true)

在 Java 中编译时。我认为编译器不会让您在 if 检查中进行分配,但也许确实如此......我认为您希望它是:

if (goodPressure == true)

要不就:

if (goodPressure)
于 2010-03-12T01:12:34.173 回答
0

您的问题是表达式中只有一个 = 符号if (goodPressure = true)。这将 true 分配给 goodPressure,然后检查 goodPressure 是否仍然为 true。

您需要使用 == 或 .equals()

于 2010-03-12T01:12:39.513 回答
0

查看最后一个 if 语句。你在做分配而不是比较。

顺便提一句。一旦你这样做,你的程序总是会返回 false ......看看你的逻辑。您在哪里将 goodPressure 设置为 true?

于 2010-03-12T01:15:46.130 回答
0

通常,类似代码if (variable = constantValue)在 Java 中被视为编译错误。但是,当常量值是布尔值时有一个例外。在这种情况下,语句等于if (constantValue)。这种问题在编译阶段是找不到的。

所以,我建议 1) 不要与布尔常量值比较,只需通过if (booleanVar); 2)总是把常量值放在前面,比如'if(true = variable)'会导致编译失败。

于 2010-03-12T02:51:13.110 回答