Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 需要帮助创建String-toString()方法吗_Java_Tostring - Fatal编程技术网

Java 需要帮助创建String-toString()方法吗

Java 需要帮助创建String-toString()方法吗,java,tostring,Java,Tostring,我正在制作一个程序,基本上显示复数,实数部分和虚数部分都有自己的数据成员,然后显示用它们进行的一些数学运算(加法、减法、乘法)。 我有两个类文件,public class Complex()和public classcomplextest()。在我的Complex() 下面是我的Complex()类中的一些主要内容,让您了解它在做什么 //**********Methods to perform calculations with object********** public Complex

我正在制作一个程序,基本上显示复数,实数部分和虚数部分都有自己的数据成员,然后显示用它们进行的一些数学运算(加法、减法、乘法)。
我有两个类文件,
public class Complex()
和public class
complextest()
。在我的
Complex()

下面是我的
Complex()
类中的一些主要内容,让您了解它在做什么

//**********Methods to perform calculations with object**********

public Complex add(Complex c){
    return new Complex((c.realPart + this.realPart) , (c.imaginaryPart + this.imaginaryPart));
}

public Complex subtract(Complex c){
    return new Complex((this.realPart - c.realPart) , (this.imaginaryPart - c.imaginaryPart));
}

public Complex multiply(Complex c){
    return new Complex();
}  



//Checks if an object is equal to the parameter
    public boolean equals(Complex c){
        return isEqual(c.getReal(), this.getReal()) && isEqual(c.getImaginary(), this.getImaginary());
    }

    //Allows checking of equality of doubles
    public boolean isEqual(double x, double y){
        //multiplier for 8 decimal places
        final double dec = Math.pow(10, 8);

        return (Math.round((x * dec)) == Math.round(y * dec));
    }
然后是测试仪:




如果您想要一个
toString
方法来输出形式为
a+bi
的复数,您可以使用以下方法:

public String toString() {
    return String.valueOf(realPart) + "+" +
           String.valueOf(imagPart) + "i";
}
当然,您可以想象并找出是否缺少单个位:

public String toString() {
    if (imaginaryPart == 0)
        return String.valueOf(realPart);
    if (realPart == 0)
        return String.valueOf(imagPart) + "i";
    return realPart + "+" + imagPart + "i";
}

例如,请参见以下测试程序:

public class Cplx {
    private double realPart, imagPart;

    public Cplx(double r, double i) {
        realPart = r;
        imagPart = i;
    }

    public String toString() {
        if (imagPart == 0)
            return String.valueOf(realPart);

        if (realPart == 0)
            return String.valueOf(imagPart) + "i";

        return realPart + "+" + imagPart + "i";
    }

    public static void main(String[] args) {
        Cplx n;
        n = new Cplx(0,0); System.out.println(n);
        n = new Cplx(1,0); System.out.println(n);
        n = new Cplx(0,2); System.out.println(n);
        n = new Cplx(1,2); System.out.println(n);
    }
}
哪些产出:

0.0
1.0
2.0i
1.0+2.0i
toString()返回对象的字符串表示形式

例如,在复杂类中,有实部和虚部的变量,可能有一个toString()方法,如下所示:

@Override
public String toString() {
    return "Complex [realPart=" + realPart + ", imaginaryPart="
            + imaginaryPart + "]";
}

如果您在Java开发中使用eclipse,实际上可以自动生成toString()和其他一些方法。通常,您不会在toString()方法中格式化输出。您应该为此创建一个单独的显示方法

对于打印,您可以使用

System.out.printf("%.3f + %.3fi",1.21312939123,3.44);
您可以根据需要更改小数位


在类似的行中,您可以使用real-partvariable++“++”+complexpart++“i”组成一个字符串。

我对您的最后一句话感到好奇,而不是格式化输出。考虑到
toString()
用于
System.out.println(myComplexVar)
之类的东西,我认为这就是渲染它的准确速度,否则您的打印语句将变得不必要的复杂。非常感谢您。。。一般来说,当老师在课堂上解释事情时,我能理解,但她并没有真正解释得太好。或者说,这只是迄今为止我们所学的较难的概念之一。
System.out.printf("%.3f + %.3fi",1.21312939123,3.44);