2016-03-26 1 views
-1

Ich möchte es zu machen, wo ich ComplexTest.class ausführen und dann in dieser Klasse Complex.class ausgeführt wird. Ich bin ziemlich neu in Java Ich habe keine Ahnung, was los ist. Nicht sicher, warum der Compiler erwartet, .class und ein Semikolon zu sehen, wo er denkt, dass sie sein sollten.Compiler-Fehler, ich unterbreche nicht

Hauptklasse

public class ComplexTest 
{ 
    //private final double re; // the real part 
    //private final double im; // the imaginary part 
     public static void main(String[] paramArrayOfString) 
    { 
     CreateObjs(); 
     PrintHeader1(); 
     PrintHeader2(); 
     // invoke and Initialize a Complex object 
      Complex Comp = new Complex(); // Invokes Complex constructor (pg 315) 
      Comp.JunctionBox(CompA, CompB); 
      // multiply.printQuestionResult(); 
     } 

    public static void CreateObjs() 
    { 
     Complex CompA = new Complex(9.5D, 7.7D); 
      Complex CompB = new Complex(1.2D, 3.1D); 
    } 
    public static void PrintHeader1() 
    { 
     System.out.printf(" A complex number in the \n form (x, y) is equal to \n x + yi, where i is \n square root of -1.\n"); 
    } 
    public static void PrintHeader2() 
    { 
     System.out.printf("\n *-Complex numbers calculations-*"); 
    } 
} 

2. Klasse

/****************************************************************************** 
* Data type for complex numbers. 
* 
* The data type is "imagmutable" so once you create and initialize 
* a Complex object, you cannot change it. The "final" keyword 
* when declaring re and imag enforces this rule, making it a 
* compile-timage error to change the .re or .imag fields after 
* they've been initialized. 
* 
* % java Complex 
* a   = 5.0 + 6.0i 
* b   = -3.0 + 4.0i 
* b + a  = 2.0 + 10.0i 
* a - b  = 8.0 + 2.0i 
* a * b  = -39.0 + 2.0i 
* a/b  = 0.36 - 1.52i 
******************************************************************************/ 
public class Complex { 
    // Constants (final) 
    private final double re; // the real part 
    private final double imag; // the imaginaryinary part 
    // Variables 
    public double product; 

    // create a new object with the given real and imaginaryinary parts 
    public Complex(double real, double imaginary) { 
     re = real; 
     imag = imaginary; 
    } 

    // return a string representation of the invoking Complex object 
    public String toString() { 
     if (imag == 0) return "<" + re + ">"; 
     if (re == 0) return "<" + imag + ">"; 
     if (imag < 0) return "<" + re + " - " + (-imag) + ">"; 
     return "<" + re + ", " + imag + ">";// + "i"; 
    } 

    // return a new Complex object whose value is (this + b) 
    public Complex plus(Complex b) { 
     Complex a = this;    // invoking object 
     double real = a.re + b.re; 
     double imaginary = a.imag + b.imag; 
     return new Complex(real, imaginary); 
    } 

    // return a new Complex object whose value is (this - b) 
    public Complex minus(Complex b) { 
     Complex a = this; 
     double real = a.re - b.re; 
     double imaginary = a.imag - b.imag; 
     return new Complex(real, imaginary); 
    } 

    // return a new Complex object whose value is (this * b) 
    public Complex timages(Complex b) { 
     Complex a = this; 
     double real = a.re * b.re - a.imag * b.imag; 
     double imaginary = a.re * b.imag + a.imag * b.re; 
     return new Complex(real, imaginary); 
    } 

    // return a new Complex object whose value is the reciprocal of this 
    public Complex reciprocal() { 
     double scale = re*re + imag*imag; 
     return new Complex(re/scale, -imag/scale); 
    } 

    // return the real or imaginaryinary part 
    public double re() { return re; } 
    public double imag() { return imag; } 

    // return a/b 
    public Complex divides(Complex b) { 
     Complex a = this; 
     return a.timages(b.reciprocal()); 
    } 

    // sample client for testing 
    public static void main(String[] args) { 
     Complex a = new Complex(9.5, 7.7); 
     Complex b = new Complex(1.2, 3.1); 

     System.out.printf("a   = %s\n", a); 
     System.out.println("b   = " + b); 
     System.out.println("a + b  = " + a.plus(b)); 
     System.out.println("a - b  = " + a.minus(b)); 
     System.out.println("a * b  = " + a.timages(b)); 
     System.out.println("a/b  = " + a.divides(b)); 
    } 
} 

Compiler/Syntaxfehler:

ComplexTest.java:15: error: constructor Complex in class Complex cannot be applied to given types; 
       Complex Comp = new Complex(); // Invokes Complex constructor (pg 315) 
           ^
    required: double,double 
    found: no arguments 
    reason: actual and formal argument lists differ in length 
ComplexTest.java:16: error: cannot find symbol 
       Comp.JunctionBox(CompA, CompB); 
           ^
    symbol: variable CompA 
    location: class ComplexTest 
ComplexTest.java:16: error: cannot find symbol 
       Comp.JunctionBox(CompA, CompB); 
             ^
    symbol: variable CompB 
    location: class ComplexTest 
3 errors 

EDIT1: die Junk-Klasse wurde behoben, der Fehler-Code-Block aktualisiert. Ich wusste, dass die Junk-Class ein Problem war.

EDIT2: Ich brauche mehr Hilfe, ich mache mehr Fehler versuchen, diejenigen zu beheben, die ich bereits habe.

+0

Entfernen Sie diese JunctionBox-Klasse. –

+0

1.) Complex.class benötigt einen Konstruktor ohne Argumente 2.) main() kann nicht sehen, was Sie in CreateObj() erstellt haben, es liegt außerhalb des Bereichs. Also, loswerden CreateObjs() und CompA & CompB direkt in main() erstellen – Phileo99

+0

Die Antwort sollte in der Antwort Abschnitt gehen –

Antwort

1

Sie haben eine "Junk" -Klassen-Deklaration, die die Datei durcheinanderbringt.

public class JunctionBox() { 

} 

... ist keine gültige Klassendeklaration zu beginnen (die Klammern nicht dort sein sollen), und Sie sollten nur eine einzige öffentliche Klassendeklaration haben - mit der Klasse, die als Datei mit dem Namen - in jedem Java Datei.

Durch das Entfernen dieser Klassendeklaration wird die Datei korrekt kompiliert.

+0

Die unnötige Klasse entfernt (hätte nicht einmal eine Klasse sein sollen) – GeekyDewd

0

Das Problem ist aufgrund der Verkettung von Doppel-und String mit Sie sie in jeder Hinsicht ersten Zeichenfolge konvertieren möglich zum Beispiel in der folgenden Art und Weise

Änderung if (imag == 0) return "<" + re + ">" zu if (imag == 0) return "<" + String.valueOf(re) + ">"

0

Einige Fehler sind: 1) In der Hauptmethode von ComplexTest rufen Sie den leeren Konstruktor Complex() auf, den Sie noch nicht definiert haben. 2) In der nächsten Zeile des Codes verwenden Sie CompA und CompB-Objekt, aber Sie haben sie nicht definiert. 3) In der zweiten Datei deklarieren Sie zuerst JunctionBox-Klasse, aber Sie legen eine Hauptmethodenmethode in eine Sekundärklasse derselben Datei. Korrigieren Sie zuerst die obigen Fehler und das Update, das Sie in Frage stellen.

+1

Für # 1 habe ich ein anderes Programm erstellt, wo Multiply3Test aussieht wie: > public class Multiply3Test { > > public static void main (String [] paramArrayOfString) { > // aufrufen und eine Multiply3 initialisieren Objekt > Multiply3 multiplizieren = new Multiply3(); // Ruft Multiply3> Konstruktor auf (S. 315) > multiplizieren.quiz(); > multiply.printQuestionResult(); >} > >} – GeekyDewd

+1

jemand Freakin Format dies für mich, Website stinkt – GeekyDewd