2

タイヤ空気圧の 1 つが 35 未満または 45 を超えると、システムが「悪い膨張」を出力するように、ブール値のテストを作成しようとしています。

私のクラスでは、私が試したブール値を使用する必要があります。ただし、返されるブール値は常に true です。理由がわかりません。

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)

ブール比較演算子は==!=です。は=代入演算子です。

goodPressure = true;また、違反条件を確認する前に、初期設定を行う必要があります。

于 2010-03-12T01:10:52.890 に答える
1

goodPressure を false に初期化していますが、true を割り当てないため、常に false になります。true に初期化してみてください。

于 2010-03-12T01:12:31.720 に答える
0

goodPressure を true に設定していないようです。必要に応じて条件が false に設定されるように見えるため、true に設定して開始することをお勧めします。

また、この行はコンパイラの警告 (またはエラー?) をスローする必要があると思います。

if (goodPressure = true)

Javaでコンパイルするとき。コンパイラーは if チェックで代入を許可しないと思っていましたが、おそらくそうであると思います...次のようにしたいと思います。

if (goodPressure == true)

あるいは単に:

if (goodPressure)
于 2010-03-12T01:12:34.173 に答える
0

問題は、式に = 記号が 1 つしかないことですif (goodPressure = true)。これにより、goodPressure に true が割り当てられ、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 に答える