Första problemet har Compusa belyst. Det andra beror på att värdena du försöker nå är deklarerade som privata, du får använda dig av c.getRealPart() samt c.getImaginaryPart() istället.
Första problemet har Compusa belyst. Det andra beror på att värdena du försöker nå är deklarerade som privata, du får använda dig av c.getRealPart() samt c.getImaginaryPart() istället.
Har försökt med c.getRealPart() & c.getImaginaryPart()
går inte!
Verkar vara något fel på multiplikationen som jag inte vet vad det kan vara?? :OO
Glömde nämna att klass 3 & 4 är helt korrekta, det enda man försöker få igång är första klassen (klass 1 = ComplexNumber)
public ComplexNumber multiply (ComplexNumber c) {
double newRealPart = ((this.realPart*c.realPart)-(imaginaryPart*c.imaginaryPart));
double newImaginaryPart = ((this.realPart*c.imaginaryPart)+(imaginaryPart*c.realPart)) ;
return null;
}
Du skapar två nya double's, men använder ingen av dem. Och du returnerar alltid null från den metoden. Det verkar som att det är meningen att du ska skapa en nytt komplext tal och returnera det, egentligen?
public ComplexNumber multiply (ComplexNumber c) {
double newRealPart = ((this.realPart*c.realPart)-(imaginaryPart*c.imaginaryPart));
double newImaginaryPart = ((this.realPart*c.imaginaryPart)+(imaginaryPart*c.realPart)) ;
return null;
}
Du skapar två nya double's, men använder ingen av dem. Och du returnerar alltid null från den metoden. Det verkar som att det är meningen att du ska skapa en nytt komplext tal och returnera det, egentligen?
Meningen är att få detta fungera och det verkar vara multiplikationen som sagt.
Jag har provat den här där varningstrianglarna försvinner:
public void multiply (ComplexNumber c) {
double newRealPart = ((this.realPart\*c.realPart)-(imaginaryPart\*c.imaginaryPart));
double newImaginaryPart = ((this.realPart\*c.imaginaryPart)+(imaginaryPart\*c.realPart));
realPart = newRealPart;
imaginaryPart = newImaginaryPart;
}
Men det verkar inte reagera, måste kunna testa multiplikationen i tester (klass 2) kanske?
Jag hoppas att det här inte är en skoluppgift, för jag tog mig friheten att skriva om klasserna som jag tycker att de ska se ut ( ;) ) - och så långt jag testat så fungerar de.
class ComplexNumber {
private double realPart;
private double imgPart;
public ComplexNumber(double realPart, double imgPart) {
this.realPart = realPart;
this.imgPart = imgPart;
}
public double getRealPart() {
return this.realPart;
}
public double getImgPart() {
return this.imgPart;
}
public static ComplexNumber addition(ComplexNumber firstComplexNumber, ComplexNumber secondComplexNumber) {
return new ComplexNumber(
firstComplexNumber.getRealPart() + secondComplexNumber.getRealPart(),
firstComplexNumber.getImgPart() + secondComplexNumber.getImgPart()
);
}
public static ComplexNumber multiplication(ComplexNumber firstComplexNumber, ComplexNumber secondComplexNumber) {
return new ComplexNumber(
(
firstComplexNumber.getRealPart() * secondComplexNumber.getRealPart()
)-(
firstComplexNumber.getImgPart() * secondComplexNumber.getImgPart()
), (
firstComplexNumber.getRealPart() * secondComplexNumber.getImgPart()
)+(
firstComplexNumber.getImgPart() * secondComplexNumber.getRealPart()
)
);
}
public String toString() {
return new StringBuffer(this.realPart+"").append("+").append(this.imgPart).append("i").toString();
}
}
public class ComplexTest {
private static int id = 0;
public static void test(ComplexNumber firstNumber, String secondNumber) {
id++;
if(firstNumber != null && firstNumber.toString().equals(secondNumber)) {
System.out.println(String.format("Test %d ok!", id));
} else {
System.out.print(String.format("Test %d error! Expected: " + secondNumber, id));
System.out.println(", was: " + firstNumber.toString());
}
}
public static void main(String[] args) {
ComplexNumber cN1 = new ComplexNumber(0, 0);
ComplexNumber cN2 = new ComplexNumber(2, 8);
ComplexNumber cN3 = new ComplexNumber(4, 5);
ComplexNumber cN4 = new ComplexNumber(1, 7);
ComplexTest.test(cN1, "0.0+0.0i");
ComplexTest.test(cN2, "2.0+7.5i");
ComplexTest.test(cN3, "4.0+5.0i");
ComplexTest.test(cN4, "1.0+7.0i");
System.out.print("\n0.0+0.0i * 2.0+8.0i: ");
System.out.println(ComplexNumber.multiplication(cN1, cN2));
System.out.print("\n0.0+0.0i + 2.0+8.0i: ");
System.out.println(ComplexNumber.addition(cN1, cN2));
}
}