0

インスタンスをパラメーターとして使用して Fraction 操作用に Java でいくつかのメソッドを作成していますが、何らかの理由で取得できません。これは、「Suma」、「Resta」、「División」、「Multiplicación」メソッドでのみ発生します。よりよく理解できるように、コードを次に示します。

package fracciones;

public class Fraction {

    private int Numerador;
    private int Denominador;

    public Fraction() {
        Numerador = 0;
        Denominador = 1;
    }

    public Fraction(int Num, int Den) {
        Numerador = Num;
        Denominador = Den;
    }

    public int getNumerador() {
        return Numerador;
    }

    public int getDenominador() {
        return Denominador;
    }

    public Fraction Suma(Fraction Suma) {
        int Num = Suma.getNumerador();
        int Den = Suma.getDenominador();

        Fraction c = new Fraction();

        c.Numerador = Numerador * Den + Denominador * Num;
        c.Denominador = Denominador * Den;
        return c;
    }

    public Fraction Resta(Fraction Resta) {
        int Num = Resta.getNumerador();
        int Den = Resta.getDenominador();

        Fraction c = new Fraction();

        c.Numerador = Numerador * Den - Num * Denominador;
        c.Denominador = Denominador * Den;
        return c;
    }

    public Fraction Multiplicación(Fraction Multiplicación) {
        int Num = Multiplicación.getNumerador();
        int Den = Multiplicación.getDenominador();

        Fraction c = new Fraction();

        c.Numerador = Numerador * Num;
        c.Denominador = Denominador * Den;
        return c;
    }

    public Fraction División(Fraction División) {
        int Num = División.getNumerador();
        int Den = División.getDenominador();

        Fraction c = new Fraction();

        c.Numerador = Numerador * Den;
        c.Denominador = Denominador * Num;
        return c;
    }

    public String ImpresiónFraction() {
        String Text = Numerador + "/" + Denominador;
        return Text;
    }

    public Float ImpresiónFloat() {
        Float Float = new Float(Numerador);
        Float Numero = Float.floatValue() / Denominador;
        return Numero;
    }

}

印刷用のこのクラス:

package fracciones;

public class FraccionCalc {

    public static void main(String[] args) {
        Fraction Una = new Fraction(1, 2);
        Fraction Dos = new Fraction(8, 16);

        System.out.println(Una.Resta(Dos));

        System.out.println(Una.ImpresiónFloat());

    }

}
4

8 に答える 8

6

toString()オブジェクトを印刷する場合は、クラスで自分自身をオーバーライドして定義する必要がありますFraction。それ以外の場合は、オブジェクトのハッシュコードを印刷するだけです。

たとえば、次のようなものが必要になる場合があります。

@Override
public String toString() {
    return "Fraction [" + Numerador + "/" + Denominador + "]";
}
于 2013-04-04T09:17:37.327 に答える
2

FractiontoString()現在使用しているため、メソッドを実装する必要がObject.toString()あります。

getClass().getName() + '@' + Integer.toHexString(hashCode())

実装例:

class Fraction
{
    @Override public String toString()
    {
        return Numerador + "/" + Denominador;
    }
}
于 2013-04-04T09:18:21.720 に答える
2

Fractionこのメソッドをクラスに追加します

    @Override
    public String toString() {
        return "Numerador: "+Numerador+", "+"Denominador: "+Denominador;
    }

PS:変数名とメソッド名を記述するときはキャメル ケースを使用し、クラス名を記述するときはパスカル ケースを使用します。

于 2013-04-04T09:21:55.753 に答える
1

toString()クラスでメソッドをオーバーライドする必要があります。System.out.println()それを使用して、オブジェクトのテキスト表現を取得します。

于 2013-04-04T09:19:15.733 に答える
1

オブジェクトへの参照を印刷しています。実際の整数値を取得したい場合は、getter メソッドを提供するか、変数を公開して Una.Num などを介して直接出力する必要があります...

于 2013-04-04T09:19:46.233 に答える
1

これをやってみてください

System.out.println(Una.Resta(Dos).getNumerador() + Una.Resta(Dos).getDenominador());
于 2013-04-04T09:20:30.760 に答える
1

Una.Resta() => Fraction クラスのオブジェクトを返します。System.out.println => 印刷する文字列が必要です。そのため、Object クラスの toString() メソッドを呼び出して、オブジェクトを文字列にキャストする必要があります。したがって、このメソッドを Fraction クラスに実装して、出力する文字列をフォーマットする必要があります。

于 2013-04-04T09:22:29.127 に答える
0

メソッドは Fraction 型を返します。これには、オブジェクトの文字列表現を円で制御する toString() メソッドを実装する必要があります。

あるいは、文字列型の戻り値を持つようにメソッドを変更することもできます。

于 2013-04-04T09:19:36.223 に答える