2016-10-03 4 views
0

私はJavaを使い慣れていません(現実には約3日間しか行っていません)..私はPythonの基本知識を持ち、Javaを学ぶことにしました。私は今日のJavaで最初の電卓プログラムを作って、Pythonのプログラムと同じ設定をプログラムに使用しました。問題は、毎回エラーメッセージが表示されますが、具体的には、16行目で何を使用したいのかを尋ねるときです。これは基本的なことですが、私の問題はとても愚かですが、im文法に慣れているだけなので、何が間違っているのか知りたいのですが。この基本的な電卓を実行中にエラーメッセージが表示される

import java.util.Scanner; 

    class Experiment { 
     public static void main(String[] args){ 
      double num1, num2, ans = 0; 
      String sign; 
      Scanner num = new Scanner(System.in); 

      System.out.print("Enter first number: "); 
      num1 = num.nextDouble(); 

      System.out.print("+, -, x or /? "); 
      sign = num.nextLine(); 

      System.out.print("Enter second number: "); 
      num2 = num.nextDouble(); 

      if(sign == "+"){ 
       System.out.print(num1); 
       System.out.print("+"); 
       System.out.print(num2); 
       System.out.print("="); 
       System.out.print(num1 + num2); 
      } 
      if(sign == "-"){ 
       System.out.print(num1); 
       System.out.print("="); 
       System.out.print(num2); 
       System.out.print("="); 
       System.out.print(num1 - num2); 
      } 
      if(sign == "x"){ 
       System.out.print(num1); 
       System.out.print("x"); 
       System.out.print(num2); 
       System.out.print("="); 
       System.out.print(num1 * num2); 
      } 
      if(sign == "/"){ 
       System.out.print(num1); 
       System.out.print("/"); 
       System.out.print(num2); 
       System.out.print("="); 
       System.out.print(num1 + num2); 
      } else { 
       System.out.print("That is not a valid input"); 
      } 

      }  
} 

答えて

0

いくつかのこと:ライン13上の あなたは文字列ではなく、等号演算子にequalsメソッドを使用したい、ifブロックで

sign = num.next(); 

をしたい、つまりここでは、コードです、あなたがしたいsign.equals("+")sign == "+" これらは、表示されるように異なる値に解決されます。

はさらに、if文のあなたの特定のセットで、あなたはブロックがsign.equals("/")がtrueに解決されない限り、最終的なelse文は常にトリガするためですelse if

するかどうifで開始し、その後、次の3にしたいです。その最後のelseステートメントは、そのすぐ上のifにのみ関連し、他のステートメントではありません。ifステートメント

+0

私は今それを見る!ありがとうございます:) – ConBon789

0
import java.util.Scanner; 

    class Experiment { 
     public static void main(String[] args){ 
      double num1, num2, ans = 0; 
      String sign; 
      Scanner num = new Scanner(System.in); 

      System.out.print("Enter first number: "); 
      num1 = num.nextDouble(); 

      System.out.print("Enter +, -, x or /: "); 
      sign = num.next(); 

      System.out.print("Enter second number: "); 
      num2 = num.nextDouble(); 

      if(sign.equals("+")){ 
       System.out.print(num1); 
       System.out.print(" + "); 
       System.out.print(num2); 
       System.out.print(" = "); 
       System.out.print(num1 + num2); 
      } 
      else if(sign.equals("-")){ 
       System.out.print(num1); 
       System.out.print(" - "); 
       System.out.print(num2); 
       System.out.print(" = "); 
       System.out.print(num1 - num2); 
      } 
      else if(sign.equals("x")){ 
       System.out.print(num1); 
       System.out.print(" x "); 
       System.out.print(num2); 
       System.out.print(" = "); 
       System.out.print(num1 * num2); 
      } 
      else if(sign.equals("/")){ 
       System.out.print(num1); 
       System.out.print("/"); 
       System.out.print(num2); 
       System.out.print(" = "); 
       if (num2 != 0.0) 
        System.out.print(num1/num2); 
       else 
        System.out.print("Cannot divide by 0"); 
      } else { 
       System.out.print("That is not a valid input"); 
      } 

    }  
} 

ここで最初の番号を入力した後、ユーザーがEnterキーを押しますので、あなたの星座= num.nextLine()は、したがって、あなたがnum.next()を使用する必要があり、それが入る読み込みます。あなたのすべての条件はif...else if...elseにあり、使用するべき文字列を比較する必要がありますsign.equals("+")

+0

Aaaahは助けてくれてありがとう、私は今私の問題を参照してください:) – ConBon789

関連する問題