2016-11-09 22 views
0

私は電卓の妥当性をテストすることを目的とした課題を与えられました。彼らは私たちにこのようになりますこれで行くには、デフォルトのクラスを与えている:あなたは、テストハーネスとなることを目指して、このクラスの時に展開するとしている同じ名前のメソッドを呼び出す方法とテストする方法は?

public class Calculator { 
     Double x; 
     /* 
     * Chops up input on ' ' then decides whether to add or multiply. 
     * If the string does not contain a valid format returns null. 
     */ 
     public Double x(String x){ 
       return new Double(0); 
     } 

     /* 
     * Adds the parameter x to the instance variable x and returns the answer as a Double. 
     */ 
     public Double x(Double x){ 
       System.out.println("== Adding =="); 
       return new Double(0); 
     } 

     /* 
     * Multiplies the parameter x by instance variable x and return the value as a Double. 
     */ 
     public Double x(double x){ 
       System.out.println("== Multiplying =="); 
       return new Double(0); 
     } 

} 

。次の手順は次のとおりです。

  1. testParser()というメソッドを作成します。 (12 "+ 5")×
  2. テスト( "×5 12")×値ダブル17
  3. テストを返す「(X値ダブル60
  4. テストを返します12 [3 ")は、[有効な演算子ではないため、nullを返します。ここで

私が行った現在の変更です:私はおよそほとんどが混乱していますが、私は、彼らがコールに任意のユニークな名前を与えられていないとして、実際のメソッドを呼び出すことができる午前方法です

public class TestCalculator { 
     Double x; 
     /* 
     * Chops up input on ' ' then decides whether to add or multiply. 
     * If the string does not contain a valid format returns null. 
     */ 
     public Double x(String x){ 
       return new Double(0); 
     } 
     public void testParsing() { 



     } 
     /* 
     * Adds the parameter x to the instance variable x and returns the answer as a Double. 
     */ 
     public Double x(Double x){ 
       System.out.println("== Adding =="); 
       x("12 + 5"); 
       return new Double(0); 
     } 
     /* 
     * Multiplies the parameter x by instance variable x and return the value as a Double. 
     */ 
     public Double x(double x){ 
       System.out.println("== Multiplying =="); 
       x("12 x 5"); 
       return new Double(0); 
     } 
} 

データ型を変更するため、メソッドの名前を変更することはできません。また、なぜ彼らは文字列データ型を使用して数値を加算し、掛け算するのですか? testParsers()メソッドの記述を始める方法については、非常に参考になります。ありがとう。

+3

に渡されたパラメータに基づいて右のメソッドを呼び出します。 'String'の引数を渡すと、文字列を受け付けるoverloadが使用されます。「なぜString型を使用して数値を加算し、掛け算するのですか?」 - 確かに、それは私たちではなく、質問を割り当てている人に尋ねるべき質問です。 –

+0

あなたはjavaとこのウェブサイトの両方で始まっているようですが、あなたのような他の質問を見るべきでしょう、ここにあなたに興味があるでしょう: http://stackoverflow.com/questions/21058166/is -it-possible-multiple-methods-with-a-a-another-a-a-a-a –

答えて

0
Calculator c = new Calculator(); 
String p1 = "a"; 
Double p2 = 1; 
double p3 = 2; 

c.x(p1); 
c.x(p2); 
c.x(p3); 

すべて3コールでは異なるメソッドが呼び出されます。

1

あなたが扱っているのは、メソッドのオーバーロードです。同じ名前のメソッドが3つありますが、メソッドのシグネチャが異なります。特定のメソッドを呼び出すには、適切なパラメータを渡すだけです。この場合、あなたが実行します。

Calculator c = new Calculator(); 
String string = "b"; 
Double doubleObject = 1; 
double doublePrimitive = 2; 

c.x(string); 
c.x(doubleObject); 
c.x(doublePrimitive); 

Javaは、さてあなたが効果的にオーバーロードの解決について知ることで、使用する方法を指定することができます

+0

これは多くの多型(多くの型の1つになる)ではありませんが、操作のオーバーロード。 – Obicere

+0

@Obicere私は変更を加えました。どうも。 – BlackHatSamurai

+0

したがって、たとえば "c.x(doubleObject)"を呼び出すと、これは追加メソッドを返しますか? – Taylor

関連する問題