2013-06-01 9 views
8

これは私の2番目のプログラミングクラスです。私はJavaを初めて使用しています。私は最初の課題に取り組んでおり、クラスとメソッドを含んでいます。私はこれらの話題についてはごくわずかしか知りません。私の割り当てでは、2つの数字と演算子をユーザーに求めるRPN電卓を作成するように求められます。計算機は、これらの2つの数値に対して演算を実行し、さらに1つの数値と1つの演算子を求めます。計算機は最初のセットの結果を使用して、入力した新しい番号で別の操作を実行します。ユーザーが手紙を入力すると、プログラムは終了します。コード(原油)を添付しています。私はコーディングと同じようにメソッドを理解する助けが必要です。できるだけ早く助けてください、私はこれを学びたいと思います。どんな助けもありがとうございます。RPNCalculatorコード混同

import java.util.Scanner; 

public class RPNCalc 
{ 
    public static void main(String[]args) 
    { 
     Scanner keyboard = new Scanner(System.in); 

     double v1, v2; 
     String operator = keyboard.nextLine(); 
     char symbol = operator.charAt(0); 

     System.out.print("Enter a value v1: "); 
     v1 = keyboard.nextDouble(); 
     System.out.println(); 
     System.out.print("Enter a value v2: "); 
     v2 = keyboard.nextDouble(); 
     System.out.println(); 
     System.out.print("Enter one of the valid operators +, -, *, /, nCr,: "); 
     operator = keyboard.nextLine(); 
     switch (symbol) 
      { 
      case'+': 
       sum.writeOutput(); 
       break; 
      case'-': 
       minus.writeOutput(); 
       break; 
      case'*': 
       times.writeOutput(); 
       break; 
      case'/': 
       divide.writeOutput(); 
       break; 
      case'q': 
       System.out.println("Your last result was " ); 
      default: 
       System.out.println("You must choose an appropriate operator ."); 
      } 
    } 

    double value1, value2; 
    int n; 

    public static double sum(double value1,double value2) 
    { 
     double newSum = value1 + value2; 
     return newSum; 
    } 
    public static double minus(double value1, double value2) 
    { 
     double newMinus = value1 - value2; 
     return newMinus; 
    } 
    public static double times(double value1, double value2) 
    { 
     double newTimes = value1 * value2; 
     return newTimes; 
    } 
    public static double divide(double value1, double value2) 
    { 
     double newDivide = value1/value2; 
     return newDivide; 
    } 
} 
+0

問題は何ですか? – arynaq

+0

コンパイラがシンボルを見つけることができないという4つのエラーが表示されます。付属しています。私はこれを正しくやっているかどうか、私に求めている結果を私に与えるかどうかは分かりません。私はクラスの説明と別のJavaファイルを作成する必要がありますか?繰り返しますが、私はプログラミングに慣れていません。 RPNCalc.java:25:エラー:シンボルを見つけることができません \t \t \t \t sum.writeOutput(); \t \t \t \t^ – Charla

+1

「sum.writeOutput();」とは何ですか?私が定義した 'sum'は関数であり、関数はメンバを持つことができません。どこにでも' writeOutput() '関数が定義されていないので、2つの間違いです。 – Patashu

答えて

1

OKための課題として残されています。さあ。私は少しあなたのプログラムを変更しました。あなたのプログラムを変更するときに起こる問題は次のとおりです。 1.いずれのクラスにもwriteOutput()メソッドがありませんでしたので、そのコードを削除する必要がありました。 2.反復処理を行うためにwhileループを導入する必要がありました。 3.演算子を下に移動オペレータの文字列を読み込んだ後に.charAt(0)メソッドを呼び出す

switch文を使用しているため、演算子の値を "nCr"の文字列の値と比較することはできません。

最後に、演算の結果は次の演算の入力の1つでなければなりません。つまり、最初の演算の結果は次の演算の最初のパラメータに渡されます。

import java.util.Scanner; 

public class RPNCalc 
{ 
    public static void main(String[]args) 
    { 
     Scanner keyboard = new Scanner(System.in); 

     double v1, v2; 
//  String operator = keyboard.nextLine(); 
//  char symbol = operator.charAt(0); 
     char operator = ' ';//First time around, set this to an something other than 'q' 
     String operatorString = " "; 
     System.out.print("Enter a value v1: "); 
     v1 = keyboard.nextDouble(); 
     System.out.println(); 
     while(operator != 'q') 
     { 
      System.out.print("Enter a value v2: "); 
      v2 = keyboard.nextDouble(); 
      System.out.println(); 
      System.out.print("Enter one of the valid operators +, -, *, /, nCr,: "); 
      operatorString = keyboard.next();//nextLine() doesn't wait until the user hit enter 
      operator = operatorString.charAt(0); 
      switch (operator) 
      { 
      case'+': 
       v1 = sum(v1, v2); 
       System.out.println(v1); 
       break; 
      case'-': 
       v1 = minus(v1, v2); 
       System.out.println(v1); 
       break; 
      case'*': 
       v1 = times(v1, v2); 
       System.out.println(v1); 
       break; 
      case'/': 
       v1 = divide(v1, v2); 
       System.out.println(v1); 
       break; 
      case'q': 
       System.out.println("Your last result was " );     
      default: 
       System.out.println("You must choose an appropriate operator ."); 
      } 
     } 
    } 

    double value1, value2; 
    int n; 

    public static double sum(double value1,double value2) 
    { 
     double newSum = value1 + value2; 
     return newSum; 
    } 
    public static double minus(double value1, double value2) 
    { 
     double newMinus = value1 - value2; 
     return newMinus; 
    } 
    public static double times(double value1, double value2) 
    { 
     double newTimes = value1 * value2; 
     return newTimes; 
    } 

    public static double divide(double value1, double value2) 
    { 
     if (value2 == 0) 
     { 
      System.out.println("Division by Zero. Try again"); 
      return value1; 
     } 
     double newDivide = value1/value2; 
     return newDivide; 
    } 
} 
+0

私は家庭教師とこのことを考え出しましたが、あなたの助けに感謝します。これは非常に分かりやすいものでした。再度、感謝します。 – Charla

0

あなたは関数名をあるクラスのオブジェクトであるかのように扱います。これはコンパイルされますか?

ユーザーが 'q'を入力すると、プログラムを終了します。

最初はオペレータを読んで始めましょう。どうして?

プログラムの本体をループで囲む必要があります。

私はあなたのための数行を書きますが、変更の大半は、あなた

double result; 
System.out.print("Enter the first value"); 
result = keyboard.nextDouble(); 
boolean done = false; 

while (!done) { 
    System.out.println("Enter a value"); 
    v1 = keyboard.nextDouble(); 
    System.out.print("Enter one of the valid operators +, -, *, /, nCr,: "); 
    operator = keyboard.nextLine(); 
    symbol = operator.charAt(0); 
    switch (symbol) { 
     case '+': 
     result = sum(result, v1); 
     break; 
     ... 
     case 'q': 
     System.out.println("Your last result was " + result); 
     done = true; 
     break; 
    } 
} 
+0

ファイルはコンパイルされませんでしたが、RPNCalc.java:25という4つのエラーを受け取りました:エラー:シンボルが見つかりません \t \t \t \t sum.writeOutput(); \t \t \t \t^ シンボル:変数sum 場所:クラスRPNCalc \t \t \t \t^ – Charla

+0

申し訳ありませんが、私は私の文を終了しませんでした。私はもともとdo while文で囲まれた完全に異なるプログラムを持っていましたが、それを変更するように指示されました。 – Charla