2012-01-12 19 views
0

テキストベースの電卓を作成しようとしています。私はメインクラスとcalcクラスを持っています。 calcクラスはすべてが起こる場所で、メインクラスで呼び出されます。私の問題は、私のcalcクラスのいくつかの変数です。コードで見るのが簡単です。Java - スキャナを使用して変数を他のメソッドに渡す

import java.util.Scanner; 

public class Calc { 
     String op; 
    public void operation(String opt){ 
     System.out.println("What operation would you like to perform?"); 
     Scanner operation = new Scanner(System.in); 
     op = opt; 
     String op = operation.toString(); 
     getOp(op); 
    } 

    public String getOp(String op){ 
     return op; 
    } 

以降で私のコードに記載されています。

public void calculate(){ 
     operation(op); 
     getNums(1,2); 
     if(op == "Division"+"division"+"/"){ 
      double value = 1/2; 
      System.out.println("Your answer is"+value); 
     } 
     if(op == "Multiplication"+"multiplication"+"*"){ 
      double value = 1*2; 
      System.out.println("Your answer is"+value); 
     } 
     if(op == "Addition"+"addition"+"+"){ 
      double value = 1+2; 
      System.out.println("Your answer is"+value); 
     } 
     if(op == "Subtraction"+"subtraction"+"-"){ 
      double value = 1/2; 
      System.out.println("Your answer is"+value); 
     } 

    } 

私の問題は、私はスキャナでOPの値を設定するために、そして私の数字(1と2)の値がいずれかに設定されている場合、私は知らないように見えることができないということです。どんな助けでも大歓迎です、ありがとうございます。

+1

'=='の代わりに 'string.equals'メソッドを文字列comparizonに使用してください。 'Calc'で' Scanner'を使わず、 'main'で使ってください。 'Calc'を入力して計算するように設計します。 –

答えて

0

私はβɛƨǤʋǤʋяʋиɢの提案と同じように、あなたのCalクラスでoperation()を呼び出さないでください。ユーザーにプロンプ​​トが表示され、入力があった場合、メインクラスにあるはずです。 私はエラーメッセージが表示されないので、あなたが得ることができる問題の1つは、あなたのop変数を宣言して、ユーザーの入力をキャッチするために操作()関数で別のローカル変数opを開始することです。 ScannerオブジェクトがtoString()の代わりにnextLine()メソッドを呼び出して、ユーザーの入力を捕まえてはいけません。私は自分のコンプを持っていないので、コードを投稿することはできませんが、コードを最初に修正し、より明確になるようにいくつかのエラーメッセージを投稿してみてください。

1

FWIWでは、.toStringの代わりに.nextIntを使用します。これにより、番号が入力された後、店舗に引き渡され条件付きが行われるようになります。

さらに、計算にswitch文を使用する方が良いと思います。その場合は、.toStringのままにしておくか、.nextに変更してcharまたはstringを渡すことができます。

関連する問題