如何创建一个添加减法的程序除以2个分数?

时间:2012-10-01 20:40:15

标签: java add calculator fractions

首先,我想开始说我是编程的新手,我不太了解。有了这个说我会很感激,如果有人可以帮助我的程序,它应该读取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());
    }
}

谢谢你的帮助,我真的很感激。

2 个答案:

答案 0 :(得分:3)

为什么要制作字段staticstatic字段属于该类,而不是每个实例化(不是您想要的)。尝试删除static关键字。

另一方面,您提到您想要阅读用户的输入。您可能需要考虑使用Scanner(如果您还不知道这个方便的类)。

一旦你阅读了2/3 + 4/5这样的输入,就可以使用空格作为分隔符来分割字符串。现在,您可以解析新形成的字符串数组的第一个(2/3)和第三个(4/5)元素,并执行与数组的第二个元素对应的操作({{ 1}})。

答案 1 :(得分:0)

static变量和instance变量之间存在差异。

  • 静态变量是一个类变量,对所有实例都是通用的。所以,如果你为一个实例更改这些变量,它将针对所有实例进行更改。
  • 另一方面,实例变量特定于每个实例。它们被绑定到类的实例。

那就是说..你需要稍微修改你的代码..

将班级中的static个变量更改为instance变量..

private static int numer;
private static int denom;

以上两个变量应该是实例变量..因此它们对于您为类创建的每个实例都是唯一的。

所以,将它们改为: -

private int numer;
private int denom;

为了阅读用户输入,A.R.S已经为您提供了valuable课程的链接..