1

ここで何かが欠けています。私のプログラムは、その人にサービス パッケージを入力するように求めた後、終了します。冗長なコードを許してください。私はこれの初心者であり、これより効率的な方法をまだ学んでいません。

import javax.swing.JOptionPane;

public class InternetSP
{
    public static void main(String[] args)
    {

        final double PACKA = 9.95, PACKB = 13.95, PACKC = 19.95;
        final int PACKAC = 2, PACKBC = 1;
        double chargecalc, entrycalc = 0;
        String entry, pack;

        pack = JOptionPane.showInputDialog(null, "Please enter your service" + " package (A,B or C)");
        if (pack == "A" || pack == "B")
        {
            entry = JOptionPane.showInputDialog(null, "Please enter your usage " + "hours.");
            entrycalc = Double.parseDouble(entry);
        }

        if (pack == "A")
        {
            if (entrycalc > 10)
            {
                chargecalc = (PACKA + (entrycalc * PACKAC));
                JOptionPane.showMessageDialog(null, "Your total charges are: $" + chargecalc);
            }
            else
            {
                JOptionPane.showMessageDialog(null, "Your total charge is: $" + PACKA);
            }
        }
        else if (pack == "B")
        {
            if (entrycalc > 20)
            {
                chargecalc = (PACKB + (entrycalc * PACKBC));
                JOptionPane.showMessageDialog(null, "Your total charges are:" + "$ " + chargecalc);
            }
            else
            {
                JOptionPane.showMessageDialog(null, "Your total charge is: $" + PACKB);
            }

        }
        else if (pack == "C")
        {
            JOptionPane.showMessageDialog(null, "Your total charge is:" + "$ " + PACKC);
        }


        System.exit(0);

    }
}
4

1 に答える 1

2

文字列をequals(またはより適切にはequalsIgnoreCase)メソッドと比較してみてください。

ここで説明するように:Java String.equals vs ==、javaでは、 "=="演算子は、2つの変数が同じオブジェクトを指しているかどうかをチェックし、同じ値を持っているかどうかはチェックしません。

だからあなたが書くなら

String a1 = "A";
String a2 = "A"; 

それから

if (a1 == a2) {
  // This is not executed
}
if (a1.equals(a2)) {
  // This is executed
}

これは重要な違いであり、すべてのオブジェクトに存在しますが、比較する最初のオブジェクトの1つであるため、ほとんどの人は文字列にだまされます。

通常、人々は数値を比較することから始めます。Javaでは、プリミティブな数値(int、longなど)はオブジェクトではないため、==と比較できます。

これがお役に立てば幸いです。

于 2013-02-20T13:28:36.620 に答える