2016-03-26 38 views
-1

'u desteklemiyorum ComplexTest.class'ı çalıştırdığım yerde çalışmayı istiyorum ve sonra bu sınıfta Complex.class'ı çalıştırıyor. Ben java'da oldukça yeniyim, neyin yanlış olduğunu bilmiyorum. Derleyicinin neden olması gerektiğini düşündüğü .class ve bir yarı kolon görmeyi beklediğinden emin değil.derleyici hataları,

Ana sınıfı

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. sınıf

/****************************************************************************** 
* 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)); 
    } 
} 

Derleyici/sözdizimi hataları:

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: hataları kod bloğunu güncellenen, önemsiz sınıfını düzeltildi. Önemsiz sınıfın bir problem olduğunu biliyordum.

EDIT2: Daha fazla yardıma ihtiyacım var, zaten sahip olduğum parçaları düzeltmeye çalışırken daha fazla hata yapıyorum.

+0

Bu JunctionBox sınıfını kaldırın. –

+0

1.) Complex.class bir bağımsız değişken yapıcıya ihtiyaç duyar 2.) main() CreateObj() 'da neyi yarattığınızı göremez, kapsam dışı. Yani, CreateObjs() kurtulmak ve doğrudan ana() – Phileo99

+0

içinde CompA & CompB inşa etmek. Cevap cevap bölümünde –

cevap

1

Dosyayı bozan bir "önemsiz" sınıf bildiriminiz var.

public class JunctionBox() { 

} 

... (parantez olmamalı) ile başlayacak geçerli bir sınıf bildirimi değildir ve yalnızca tek bir public class beyanı olmalıdır - dosyası olarak adlandırılan sınıfla - Her Java dosya.

Bu sınıf bildiriminin kaldırılması, dosyanın düzgün bir şekilde derlenmesini sağlar.

+0

yaptıktan sonra hata listesini güncellemek Gereksiz sınıf kaldırıldı (hatta bir sınıf ama bir fonksiyon olmamalıydı) – GeekyDewd

0

sorun

değişiklik if (imag == 0) return "<" + re + ">" if (imag == 0) return "<" + String.valueOf(re) + ">"

0

aşağıdaki şekilde örneğin mümkün olan her şekilde dizeye ilk onları dönüştürmek zorunda nedeniyle çift ve dize birleştirme sahip olmaktır Bazı hatalar: 1) ComplexTest ana yönteminde henüz tanımlanmamış boş Constructor Complex() çağırır. 2) sonraki kod satırında CompA ve CompB nesnesini kullanırsınız, ancak bunları tanımlamış değilsiniz. 3) İkinci dosyada, önce JunctionBox sınıfını bildirirsiniz, ancak aynı dosyaya ait bir sekonder sınıfta ana yöntem yöntemini kullanırsınız. İlk önce yukarıdaki hataları ve sorduğunuz güncelleştirmeyi düzeltin.

+1

# 1 için Multiply3Test görünüyor başka bir program yaptım gibi: > genel sınıf Multiply3Test { > > public void ana (string [] paramArrayOfString) { > //) (çağırmak ve Multiply3 nesnesi > Multiply3 çok kez = yeni Multiply3 başlatma; // Multiply3'ü çağırır> constructor (pg 315) > multiply.quiz(); > multiply.printQuestionResult(); >} >>} – GeekyDewd

+1

Birisi bunu benim için biçimlendirdi, web sitesi kokuyor – GeekyDewd

İlgili konular