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

你为什么要做你的领域staticstatic字段属于类而不是每个实例化(不是你想要的)。尝试删除static关键字。

另一方面,您提到您想读取用户的输入。您可能想考虑使用 a Scanner(以防您还不知道这个方便的类)。

读取输入后2/3 + 4/5,您可以使用空格作为分隔符来拆分字符串。2/3现在,您可以从新形成的字符串数组的第一个 ( ) 和第三个 ( ) 元素中解析一个分数4/5,并执行与数组 ( ) 的第二个元素对应的操作+

于 2012-10-01T20:47:41.620 回答
0

static变量和变量之间是有区别的instance

  • 静态变量是所有实例通用的类变量。因此,如果您为一个实例更改这些变量,它将为所有实例更改。
  • 另一方面,实例变量特定于每个实例。它们绑定到类的实例。

话虽这么说..您需要稍微修改一下代码..

static将类中的变量更改为instance变量..

private static int numer;
private static int denom;

上面的两个变量应该是实例变量。所以它们对于你为你的类创建的每个实例都是唯一的。

因此,将它们更改为: -

private int numer;
private int denom;

而对于阅读用户输入,A.R.S已经给你链接到一个valuable类..

于 2012-10-01T20:48:47.640 回答