Java中的替代方法
我试图从类“Operatii”执行一个方法。该方法写在“PolinomIntreg”类中。问题是,当执行时,程序会进入无代码的代码,而不是代码。Java中的替代方法
我该怎么做才能让程序进入有代码的程序?
PolinomIntreg类:
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
}
}
Operatii类:
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是一个接口。
如果我正确理解你的问题,如果你正试图调用add方法,那么你试图调用add方法,该方法在最后具有'Integer'变量,所以如果你声明你的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;
更新:
也改变POL 1和POL的类型为int类型的
static int[] pol1 = new int[100];
static int[] pol2 = new int[100];
我宣布从Operatii类int grad1和grad2变量,仍然不会调用方法与代码 – 2013-03-11 19:03:30
@DragosMihaiMarcean刚刚意识到你的pol1和pol2是Integer类型的数组声明它们的类型为int,然后它会被调用,我有更新我的答案 – 2013-03-11 22:50:34
您不是覆盖方法。为了覆盖,您需要使用确切签名(您使用int
而不是Integer
)。我建议你将所有代码复制到“无代码方法”(或自动生成的方法)中,并删除非覆盖方法。
顺便说一句,这是最终争论的力量使用@Override
注释。如果你试图添加它 - 你会看到你的代码没有覆盖任何方法。
从你的代码中似乎有在签名中的一些方法与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
签名的方法。你不是在重写你只是写不同的方法。
将您的实施代码移入具有正确签名的方法中。
public void value(int pol1[], int grad1)
和
public void value(INTEGER[] pol1, INTEGER grad1)
是不同的。您正在调用public void value(INTEGER[] pol1, INTEGER grad1)
,它没有实现。
我试图实现代码公共无效值(INTEGER [] pol1,INTEGER grad1),但我不知道如何调用扫描仪INTEGER – 2013-03-11 17:47:40
这太明显是不相关的代码。你能否提供一个你正面临的问题的例子,而不是把你的任务细节搞乱? – millimoose 2013-03-10 15:23:58
你试图打电话的方法是什么? – christopher 2013-03-10 15:24:39
我想调用poli.add(pol1,pol2,grad1,grad2)方法。它不会执行我编写代码的地方。它执行覆盖部分。问题是,如果meniu == 0多项式具有整数系数,并且如果meniu == 1它具有浮动系数。 – 2013-03-11 17:45:05