2

まず、私はプログラミングに不慣れで、あまりよく知らないということを始めたいと思います。そうは言っても、誰かが私のプログラムで2つの分数と、たとえば「2/3+4/5」の演算子を読み取ることになっているのを手伝ってくれれば幸いです。私はいくつかのコードを実行しましたが、ここで実行するとエラーが発生します。これまでのところ、次のようになっています。

public class Fraction {

    private static int numer;
    private static int denom;

     public Fraction(int num, int den)
        {
            numer = num;
            denom = den;
            simplify();
        }


    int findGcd(int a, int b)
        { 
        int temp;
            while(b != 0)
            {
                    temp = b;
                    b = a % b;
                    a = temp;
            }
        return a;
    }


    void simplify()
        {
            int gcd = findGcd(numer, denom);
            numer /= gcd;
            denom /= gcd;
        }

    public int getNumer(){
        return numer;
    }

    public int getDenom(){
        return denom;
    }



    Fraction add(Fraction x) {
        Fraction result;

        if (x.getDenom()== getDenom()) {
            result = new Fraction(x.getNumer() + getNumer(), denom);
        } else {
            denom = this.getDenom() * x.getDenom();
            numer = this.getNumer() * x.getDenom() + x.getNumer() * this.getDenom();
            return new Fraction(numer,denom);


        }
        return result;
    }

    public String toString(){
          return (Integer.toString(numer) + "/" +
                     Integer.toString(denom));
    }



    public static void main (String []args){
            Fraction a = new Fraction(1,3);
            Fraction b = new Fraction(4,5);
            System.out.println(a.toString());
            System.out.println(b.toString());
    }
}

あなたの助けに感謝します私は本当に感謝しています。

4

2 に答える 2

3

なぜあなたは自分の畑を作っているのstaticですか?staticフィールドは、各インスタンス化ではなくクラスに属します(ここで必要なものではありません)。staticキーワードを削除してみてください。

別の注意点として、ユーザーからの入力を読みたいとのことでした。これにaを使用することを検討することをお勧めしScannerます(この便利なクラスについてまだ知らない場合)。

のような入力を読み取る2/3 + 4/5と、区切り文字としてスペースを使用して文字列を分割できます。2/3これで、新しく形成された文字列配列の1番目( )と3番目(4/5)の要素の一部を解析し、配列の2番目の要素( +)に対応する操作を実行できます。

于 2012-10-01T20:47:41.620 に答える
0

static変数と変数には違いがありinstanceます。

  • 静的変数は、すべてのインスタンスに共通のクラス変数です。したがって、1つのインスタンスに対してこれらの変数を変更すると、すべてのインスタンスに対して変更されます。
  • 一方、インスタンス変数は各インスタンスに固有です。これらはクラスのインスタンスにバインドされます。

そうは言っても..コードを少し変更する必要があります..

staticクラス内の変数を変数に変更しinstanceます。

private static int numer;
private static int denom;

上記の2つの変数は、インスタンス変数である必要があります。これにより、クラス用に作成するインスタンスごとに一意になります。

したがって、次のように変更します。-

private int numer;
private int denom;

そして、ユーザー入力を読み取るために、すでにクラスA.R.Sへのリンクを提供しています。valuable

于 2012-10-01T20:48:47.640 に答える