2016-12-06 13 views
-1

このプログラムの目的は、作成した別のプログラムをテストすることです。異なるクラスからインスタンスメソッドを呼び出す

ComplexNumberと呼ばれています。このクラスには、加算、掛け算、複素数の除算、物事のすべてがあり、すべてがメソッドに含まれています。先生はテストクラスを作成したいと思っています。

私が抱えている問題は、ComplexNumberクラスのメソッドを呼び出すことです。たとえば、plusメソッドを呼び出すと、このメソッドは2つのComplexNumberを取り込み、それらを追加します。これまで私はインタラクションパネルを使ってこれらのメソッドをテストしてきました。私がインタラクションパネルでそれらを呼び出す方法は、first.plus(Second)を実行することでした。これにより最終的な値が得られます。

テストクラスでは、メソッドを呼び出すのが難しいです。
私はクラス名が必要であることを知っています。

私が試した:

ComplexNumber.first.plus(second) 

をしかし、それは動作しませんでした。
どうすればいいですか?ここで

は私のコードです:複素数クラスのメソッドの

class TestComplexNumber 
{ 
    double real;   
    double imag; 

    public TestComplexNumber(double a, double b) 
    { 
     this.real=a; 
     if ((b<1000)&&(b>-1000)) 
      this.imag=b; 
     else 
     { 
      this.imag=0; 
      System.out.println("The value you typed in for imag is <1000 or >-1000, value of imag is assigned the value of 0."); 
     } 
    } 

    public String toString() 
    { 
     double real,imag; 
     real=this.real; 
     imag=this.imag; 

     if (((real<0)||(real>0))&&(imag%1!=0)) 
     { 
      if (roundThreeDecimals(imag)>0) 
       return ""+roundThreeDecimals(real)+"+"+roundThreeDecimals(imag)+"i"; 
      else 
       return ""+roundThreeDecimals(real)+""+roundThreeDecimals(imag)+"i"; 
     } 
     else if ((real%1!=0)&&(imag!=0)) 
      return ""+roundThreeDecimals(real)+"+"+(int)imag+"i"; 
     else if((real==0)&&(imag%1!=0)) 
      return ""+imag+"i";   
     else if ((real==0)&&(imag !=0)) 
      return ""+(int)imag+"i"; 
     else if ((imag==0)&&(real!=0)) 
      return ""+(int)real+""; 
     else if (((real<0)||(real>0))&&(imag<0)) 
      return ""+(int)real+"-"+(int)Math.abs(imag)+"i"; 
     else if((real!=0)&&(imag!=0)) 
      return ""+(int)real+"+"+(int)imag+"i"; 
     else 
      return ""; 
    } 

    public static double roundThreeDecimals(double c) 
    { 
     double temp = c*1000; 
     temp = Math.round(temp); 
     temp = temp /1000; 
     return temp; 
    } 

    public static void main(String args[]) 
    { 
     for(int i=0;i<1;i++) 
     { 
      //Testing decimal values 
     TestComplexNumber first=new TestComplexNumber((int)(Math.random()*100)-(int)(Math.random()*100),(Math.random()*100)); 
      TestComplexNumber second=new  TestComplexNumber((Math.random()*100),(Math.random()*100)-(int)(Math.random()*100)); 
      //Testing whole values 
      TestComplexNumber third=new TestComplexNumber((int)(Math.random()*100)-(int)(Math.random()*100),(int)(Math.random()*100)); 
      TestComplexNumber fourth=new TestComplexNumber((Math.random()*100)-(int)(Math.random()*100),(int)(Math.random()*100)); 

      System.out.println(first); 
      System.out.println(second); 
      System.out.println(third); 
      System.out.println(fourth);  
      System.out.println("Test value for plus:"+first+second+" which added="+plus(second)); 
     } 

    } 
} 

例:

public ComplexNumber plus(ComplexNumber other) { 
    ComplexNumber sum= new ComplexNumber(this.real,this.getImag()); 

    sum.real=(this.real)+(other.real); 
    sum.setImag((this.getImag())+(other.getImag())); 

    return sum; 
} 
+0

ポストあなたの 'ComplexNumber'クラスを使用する必要があります。'ComplexNumber'のオブジェクトを作成してメソッドを呼び出す必要があります – rafid059

+0

私は2つのオブジェクトを持っています:私は私のComplexNumberクラスを投稿したくありません –

+0

' double real'と 'double imag'はオブジェクトではありません。それらは 'double'型の変数です。あなたのメインの方法では、 'new'キーワードを使って' TestComplexNumber'のオブジェクトを作成しています。あなたは同じことをし、 'ComplexNumber'クラスのオブジェクトを作成し、そのメソッドを呼び出す必要があります – rafid059

答えて

0
public class Tester { 
    public static void main(String [] args) { 
     // create two objects of ComplexNumbers with whatever values you like 
     ComplexNumber numA = new ComplexNumber(....); 
     ComplexNumber numB = new ComplexNumber(....); 

     // then add them and store the returned reference into a new variable 
     ComplexNumber result = numA.plus(numB); 
     // print the number however you like 
     System.out.println(result.real + " + i" + result.getImag()); 

    } 

} 
+0

これはまさに私が持っているものです。私はどのクラスにクラス名を入力し、その後メソッドとパラメータを入力することでそれを行うメソッドを見つけるのかコンピュータに指示する必要があります:ComplexNumber.round(5.48)

+0

'ComplexNumber.first.plus(second)'のようなメソッドを呼び出したいですか?これで多くのことが間違っています – rafid059

+0

どうすれば修正できますか? –

0

私は、この "対話パネルは" 何であるか知っているが、first.plus(second)はありませんそこから、実際のコードと異なることはありません。

plusfirstで呼び出されるメソッドです。

static ComplexNumber plus(ComplexNumber other)のように、メソッドがstaticであってはならないため、クラス名を使用する必要はありません。

結論として、別のクラスからインスタンスメソッドを呼び出すために、あなたはnew ComplexNumber()に4つの呼び出しを持つべきである持っている場合、およびを必要とする私の先生は、私が持っていると述べた


ないnew TestComplexNumber()

ComplexNumberクラスではなく、新しいクラスにテストプログラムを作成する

私は本当の問題はあなたがこのクラスを持っているということです。TestComplexNumberは、 "テストクラス"(唯一mainメソッドが必要)であることを意図したもので、ComplexNumberクラスの再作成ではありません。これはあなたがしたことのようです(私はplus、mutiply、divide 、など)。


そして、あなたが実際に「テストスイート」、ないmainメソッドを作成することになっている場合、あなたはJUnitの、または他のテストフレームワーク

関連する問題