有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java编译器错误,我不支持

我想让它运行到我运行ComplexTest的地方。类,然后在该类中它运行复杂。班我是java新手,不知道怎么了。不确定编译器希望看到什么。类和它认为应该在的分号

主类

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

二等舱

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

编译器/语法错误:

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:修复了垃圾类,更新了错误代码块。我知道垃圾课是个问题

EDIT2:我需要更多的帮助,我在试图修复我已经犯过的错误时犯了更多的错误


共 (3) 个答案

  1. # 1 楼答案

    这个问题是由于将double和string串联在一起,所以必须以各种可能的方式首先将它们转换为string 举个例子

    改变 if (imag == 0) return "<" + re + ">" if (imag == 0) return "<" + String.valueOf(re) + ">"

  2. # 2 楼答案

    你有一个“垃圾”类声明把文件弄乱了

    public class JunctionBox() {
    
    }
    

    。。。不是一个有效的类声明(括号不应该在那里),并且在每个Java文件中只应该有一个公共类声明(类名为file)

    删除该类声明将使文件正确编译

  3. # 3 楼答案

    一些错误是: 1) 在ComplexTest的main方法中,调用尚未定义的空构造函数Complex()。 2) 在下一行代码中,使用CompA和CompB对象,但尚未定义它们。 3) 在第二个文件中,您首先声明了JunctionBox类,但在同一个文件的secodary类中放置了一个main方法。 首先纠正上述错误和您提出的更新问题