2017-12-24 9 views
-4

"if"コマンドで複数のブール型を使用して電卓を作成しようとしました。また、記号の代わりに42(*)、43(+)、45( - )、および47(/)をASCII表から使用しようとしました。今、いくつかのressonのためにそれは数字とシンボルの両方で動作していないと私は理由を知りたいです。私は問題を解決する方法を知っている異なる方法しかし、私はなぜ私のprogrammが動作していないの論理を理解したい、助けることができる誰のためにありがとう!複数のブール型を使用した電卓の異なるメソッド

異なる方法の一つ: [Trouble with a simple calculator code (Java)

package RemoteSystemsTempFiles; 

    import java.util.Scanner; 

    public class SecondLesson2 { 

     public static void main(String[] args) { 


     System.out.println("Print an equation with +,-,*,/"); 
     Scanner reader=new Scanner(System.in); 
     double num5=reader.nextDouble(); 
     char action=reader.next().charAt(0); 
     double num6=reader.nextDouble(); 
     if (action=='+' || action=='-' || action=='*' || action=='/') 
     { 
      System.out.println(num5+action+num6+"="); 
     } 
     else System.out.println("You haven't printed it correctly"); 
     } 

    } 
+1

間違いは文字列の形成にあります。 2つのdoubleから文字列を作成しようとします。文字列連結の代わりに数値計算を実行する文字を作成しようとします。 System.out.println(num5 + "" + action + "" + num6 + "=");これを解決する。 – Zachary

+1

Zacharyさん、ありがとうございます。しかしもう1つの質問があります。 "if"を何度も使わずにStringのソリューションを書くにはどうすればいいですか? – MrBProgrammer

答えて

1

元の問題は、あなたが2倍と文字から文字列を形成しようとするラインSystem.out.println(num5+action+num6+"=");です。これは、Stringにキャストする前に数値計算を実行します。文字列を連結して文字列を作成するには、単純にSystem.out.println(num5 + "" + action + "" + num6 + "" + "=");

を使用することができます。また、if文のトーンなしで方程式を解く良い方法があるかどうかを尋ねました。 switch文を使用すると、以下のように見やすくなります。興味のあるJava用のJavaScript ScriptEngineライブラリがありますが、入力がどのようになるかわかっている場合は、Switchのステートメントは得られるほど良好です。

public static double doOperation (double x, double y, char op) { 
    switch (op) { 
     case '+': return x + y; 
     case '-': return x - y; 
     case '/': return x/y; 
     case '*': return x*y; 
    } 
    return 0; 
} 
関連する問題