0

クラス「Operatii」からメソッドを実行しようとしています。メソッドはクラス「PolinomIntreg」に記述されています。問題は、プログラムが実行されると、コードのあるメソッドではなく、コードのないオーバーライドされたメソッドに移動することです。

プログラムがコードのあるプログラムに移動するようにするにはどうすればよいですか?

PolynomIntreg クラス:

import java.util.Scanner;


public class PolinomIntreg<INTEGER> implements IPolinom<INTEGER> {

int grad1, grad2, x, i;
double val = 0;

int[] pol1 = new int[100];
int[] pol2 = new int[100];
int[] pol3 = new int[200];

public void grad(int grad1, int grad2){

    System.out.println("Introduceti gradele celor doua polinoame: ");
    Scanner in = new Scanner(System.in);
    this.grad1 = in.nextInt();
    this.grad2 = in.nextInt();


}


public void coef(int pol1[], int pol2[], int grad1, int grad2){

    System.out.println("Introduceti coeficientii reali ai primului polinom: ");

    for(i = 0; i < this.grad1; i++)
    {
        Scanner in = new Scanner(System.in);
        pol1[i] = in.nextInt();
    }

    System.out.println("Introduceti coeificientii reali ai celui de al doilea polinom: ");

    for(i = 0; i < this.grad2; i++)
    {
        Scanner in = new Scanner(System.in);
        pol2[i] = in.nextInt();
    }
}

public void add(int pol1[], int pol2[], int grad1, int grad2){

    if(this.grad1 > this.grad2)
    {
        for(i = 0; i < this.grad1 ; i++)
            pol1[i] = pol2[i] + pol1[i];
    }
    else
        for(i = 0; i < this.grad2 ; i++)
            pol2[i] = pol2[i] + pol1[i];
}

public void substract(int pol1[], int pol2[], int grad1, int grad2){

    if(this.grad1 > this.grad2)
    {
        for(i = 0; i < this.grad1 ; i++)
            pol1[i] = pol2[i] - pol1[i];
        afisare(pol1,this.grad1);
    }
    else
        for(i = 0; i < this.grad2 ; i++)
            pol2[i] = pol2[i] - pol1[i];
        afisare(pol2,this.grad2);

}

public void value(int pol1[], int grad1){


    System.out.println("Introduceti o valoare pentru x: ");
    Scanner in = new Scanner(System.in);
    x = in.nextInt();

    for( i = 0; i < this.grad1; i++)
        val = val + pol1[i] * Math.pow(x,i);

    System.out.println("Valoarea polinomului in punctul" + x + " este " + val);
}

public void afisare(int pol1[], int grad1){

    for(i = grad1 - 1; i >= 0; i--)
        System.out.println(pol1[i] + "^" + i + "+ ");
}


public void multiply(int pol1[], int pol2[], int grad1, int grad2){

    int j = 0;

    for ( i = 0; i < this.grad1 ; i++)
        for (j = 0; j < this.grad2 ; j++)
        {
            pol3[i+j] = pol3[i+j] + pol1[i] + pol2[j]; 
        }
}


@Override
public void add(INTEGER[] pol1, INTEGER[] pol2, INTEGER grad1, INTEGER grad2) {
    // TODO Auto-generated method stub

}

@Override
public void value(INTEGER[] pol1, INTEGER grad1) {
    // TODO Auto-generated method stub

}


@Override
public void multiply(INTEGER[] pol1, INTEGER[] pol2, INTEGER[] pol3,
        INTEGER grad1, INTEGER grad2, INTEGER grad3) {
    // TODO Auto-generated method stub

}


@Override
public void grad(INTEGER grad1, INTEGER grad2) {


}


@Override
public void coef(INTEGER[] pol1, INTEGER[] pol2, INTEGER grad1,
        INTEGER grad2) {
    // TODO Auto-generated method stub

}


@Override
public void afisare(INTEGER[] pol1, INTEGER grad1) {
    // TODO Auto-generated method stub

}


@Override
public void substract(INTEGER[] pol1, INTEGER[] pol2, INTEGER grad1,
        INTEGER grad2) {
    // TODO Auto-generated method stub

}

}   

操作クラス:

import java.util.Scanner;


public class Operatii {

static Integer[] pol1 = new Integer[100];
static Integer[] pol2 = new Integer[100];
static Integer[] pol3 = new Integer[200];
static public Integer grad1, grad2,grad3, x, i;

static Float[] pol11 = new Float[100];
static Float[] pol21 = new Float[100];
static Float[] pol31 = new Float[200]; 
    static Float grad11, grad21, grad31;
Float x1;


public static void main(String args[]){

    IPolinom<Integer> poli = new PolinomIntreg<>();
    IPolinom<Float> polr = new PolinomReal<>();

    System.out.println("Apasati 1 pentru operatii cu polinoame cu coef reali");
    System.out.println("Apasati 0 pentru operatii cu polinoame cu coef intregi");

    Scanner in = new Scanner(System.in);
    int meniu = in.nextInt();

    if( meniu == 0){

    poli.grad(grad1, grad2);
    poli.coef(pol1, pol2, grad1, grad2);
    poli.add(pol1, pol2, grad1, grad2);
    //poli.multiply(pol1, pol2, pol3, grad1, grad2, grad3);
    //poli.value(pol1, grad1);
    //poli.afisare(pol1, grad1);
    //poli.afisare(pol2, grad2);

            }

    else if ( meniu == 1 ){
        polr.grad(grad11, grad21);
        polr.coef(pol11, pol21, grad11, grad21);
        polr.add(pol11, pol21, grad11, grad21);
        polr.multiply(pol11, pol21, pol31, grad11, grad21, grad31);
        polr.value(pol11, grad11);
        polr.afisare(pol11, grad11);
        polr.afisare(pol21, grad21);
    }

    else System.out.println("Eroare introducere optiune! ");



}

}

IPolinom はインターフェイスです。

4

4 に答える 4

1

あなたのコードから、たとえばINTEGER、署名にいくつかのメソッドがあり、他のメソッドには.int

public void afisare(int pol1[], int grad1){

}

@Override
public void afisare(INTEGER[] pol1, INTEGER grad1) {
    // TODO Auto-generated method stub

}

あなたが書いたメソッドにはint署名があり、のメソッドにはInterface署名がありINTEGERます。メソッドをオーバーライドしているのではなく、単に別のメソッドを書いているだけです。

実装コードを正しいシグネチャを持つメソッドに移動します。

于 2013-03-10T15:27:29.913 に答える
1
public void value(int pol1[], int grad1)

public void value(INTEGER[] pol1, INTEGER grad1)

異なっています 。あなたは実装のないものを呼び出しpublic void value(INTEGER[] pol1, INTEGER grad1)ています。

于 2013-03-10T15:30:11.813 に答える
1

私があなたの質問を正しく理解していれば、 add メソッドを呼び出そうとしている場合、最後に「整数」の変数を持つ add メソッドを呼び出そうとしているので、grad 変数を「int」型に宣言すると次に、コードを持つメソッドに移動します。

より正確に言うと:

    poli.add(pol1, pol2, grad1, grad2);  here grad1 and grad2 are type of Integer. Declare grad1 and grad2 to be int then the add method which has code will be called.

grad1 と grad2 を次のように宣言します

 int grad1, grad2;

アップデート:

また、pol1 と pol2 の型を int 型に変更します。

   static int[] pol1 = new int[100];
   static int[] pol2 = new int[100];
于 2013-03-10T15:24:59.033 に答える
1

メソッドをオーバーライドしていませんオーバーライドするには、正確な署名を使用する必要があります(intの代わりに使用しますInteger)。「コードのないメソッド」(または自動生成されたメソッド) 内のすべてのコードをコピーし、オーバーライドしていないメソッドを削除することをお勧めします。

ところで、これは注釈を使用した力の究極の議論です。@Override追加しようとした場合、コードがメソッドをオーバーライドしていないことがわかります。

于 2013-03-10T15:25:56.197 に答える