2016-09-19 7 views
-1

私はこのためにここに誰かを気にして申し訳ありませんが、なぜ私のコードが実行されていないのか分からないようです。私はインターネットだけでなく教科書を検索しようとしましたが、私は明らかに私が顔の真ん中を見つめていることを明らかにしていません。再度、私はこれの簡潔さを謝ります。どんな助けもありがとうございます。ネストされていれば、JavaのElseステートメントとそれをフォーマットしていますか? (初心者)

import javax.swing.*; 
/** 
* 
* @author Potato 
*/ 
public class MannPass4 
{ 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) 
    { 
     // Declerations 
     double packageA, packageB; 
     double aPrice = 9.95, bPrice = 13.95, cPrice = 19.95; 
     double hoursA = 10, hoursB = 20, rHours, holdOption, holdHours; 
     final int A_ADDIT = 2, B_ADDIT = 1; 

    holdOption = Double.parseDouble(JOptionPane.showInputDialog(null, "Enter the cuctomer's package (A, B, or C):")); 

    holdHours = Double.parseDouble(JOptionPane.showInputDialog(null, "Enter the number of hours used:")); 

     if (holdOption == 'A') 
     { 
     rHours = (holdHours - hoursA); 
     packageA = ((rHours * A_ADDIT) + aPrice); 
     JOptionPane.showMessageDialog(null, "The charges are "+ packageA); 
     } 
     else if(holdOption == 'B') 
     { 
     rHours = (holdHours - hoursB); 
     packageB = ((rHours * B_ADDIT) + bPrice); 
     JOptionPane.showMessageDialog(null, "The charges are "+ packageB); 
     }  

     else if (holdOption == 'C') 
     { 
     JOptionPane.showMessageDialog(null, "The charges are "+ cPrice); 
     } 

       else 
       { 
       JOptionPane.showMessageDialog(null, "Invalid choice, please choose either A, B, or C."); 
       }  
     }  
    } 
+0

holdOptionとholdHoursを宣言していますか? – Shmuel

+2

このコードをコンパイルして実行するとどうなりますか?何かエラーがありますか?もしそうなら、彼らは何ですか?そうでない場合は、出力はどのようなもので、どのように違うのですか? –

+0

JOptionPaneをdoubleにしてStringとして比較するのはなぜですか? –

答えて

2

それは実際にStringされるべきであるあなたは、doubleとしてholdOptionを解析しています。コードを少し変更する:

// Declarations 
double packageA, packageB; 
double aPrice = 9.95, bPrice = 13.95, cPrice = 19.95; 
double hoursA = 10, hoursB = 20, rHours, holdHours; 
final int A_ADDIT = 2, B_ADDIT = 1; 

String holdOption = JOptionPane.showInputDialog(null, 
     "Enter the cuctomer's package (A, B, or C):"); 

holdHours = Double.parseDouble(JOptionPane.showInputDialog(null, 
     "Enter the number of hours used:")); 

switch(holdOption) 
{ 
    case "A": 
     rHours = (holdHours - hoursA); 
     packageA = ((rHours * A_ADDIT) + aPrice); 
     JOptionPane.showMessageDialog(null, "The charges are " + packageA); 
     break; 
    case "B": 
     rHours = (holdHours - hoursB); 
     packageB = ((rHours * B_ADDIT) + bPrice); 
     JOptionPane.showMessageDialog(null, "The charges are " + packageB); 
     break; 
    case "C": 
     JOptionPane.showMessageDialog(null, "The charges are " + cPrice); 
     break; 
    default: 
     JOptionPane.showMessageDialog(null, 
      "Invalid choice, please choose either A, B, or C."); 
     break; 
} 
+0

ありがとうございました!私はStringのアイデアとそれに伴うすべてのことについて非常に混乱しています。なぜスイッチを使用するのですか?私が尋ねる唯一の理由は、私が扱っている章では、ネストされたIf文を教えてきたからですが、NetBeansが今、代わりにスイッチを使うことを提案しています。 –

+0

'if' /' else'と 'switch'の効果は同じです。しかし、 'switch'ステートメントはif-elseチェーンよりも計算効率が高く、特に多くのケースがある場合には効率的です。これは、if-elseチェインでは、入力された値が(最悪の場合)すべての可能な値と比較され、時間がかかるからです。しかし、 'switch'から、コンパイラはルックアップテーブルを作成します。ここで、プログラムは正しい場所にすぐにジャンプすることができます。したがって、あなたの教科書がネストされたif-elseを使うことをなぜ示唆しているのだろうか。それが適用可能な場合、スイッチはより良いです。 – Beethoven

+0

これを説明する時間をとって本当に感謝します。私は、それほど簡単なことを説明するのはイライラしなければならないことを知っています。私は正直なところ、私の教科書が私たちにこれを教える理由を知らない。現在私の教授に電子メールで知らせる。あなたのすべての助けをしてくれてありがとう、ベートーベンを迷惑にしてすみません。 –

関連する問題