-2

所以我们必须创建一个执行以下操作的 Rational 类。在 Java 中创建一个包含 Rational 类的项目。该类表示有理数。它应该只有 2 个字段 num 和 denom。它应该具有以下公共方法(以及所需的任何其他私有方法):

  • 一个将 num 和 denom(按此顺序)作为初始字段值的构造函数。如果 denom 为 0,则将数字设置为 0/1。
  • num 的访问器 (getNum)
  • denom 的访问器 (getDenom)
  • 一个 toString 方法,它返回“num/denom”(无空格)形式的字符串,其中 num 和 denom 具有存储的值
  • 一个 add 方法,它接受一个有理数 r 并返回一个有理数,该有理数是 r 与这个有理数相加的结果。它不应该改变这个有理数。
  • (加分 - 2 分)一个没有参数的 reduce 方法,将这个有理数减少到最低形式。

我有我在 Intellij IDEA 中完成的代码,但它不会让我运行程序。我知道我在大多数事情上都会出错,但我相信这只是因为我没有把东西放在正确的地方或遗漏了一些东西。这就是我到目前为止所拥有的。

import java.util.Scanner;

public class Rational {

    private int num;
    private int den; //fields

    static Scanner userInput = new Scanner(System.in);

    public static void main(String[] args) {

        System.out.println("")

        public Rational( int n, int d){

            num = n;
            den = d;

            if (d == 0) {
                num = 0;
                den = 1;

                System.out.println("Denominator is 0. Enter a number other than 0 next time.");

            }//close if

            int g = gcd(num, den);
            num = n / g;
            den = d / g;

        }//close Rational

    public String toString() {

        if (den == 1) {
            return num + "";

        } else {

            return num + "/" + den;

        }

    }//close toString

    private Rational add(Rational r) {

        int newNum = (this.num * r.den) + (r.num * this.den);
        int newDen = r.den * this.den;
        return new Rational(newNum, newDen);

    }//close add

    private static int gcd(int m, int n) {

        if (0 == n) {
            return m;

        } else {

            return gcd(n, m % n);

        }//close else

    }//close gcd

}//close main

}//close class
4

1 回答 1

0
      public Rational(int n, int d){ // put Your Constructor Out of the main First
         num = n;
         den = d;

         if (d == 0) {
            num = 0;
            den = 1;
            System.out.println("Denominator is 0. Enter a number other than 0 next time.");
        }//close if
         int g = gcd(num, den);
         num = n / g;
         den = d / g; 
       }//close Rational
    }

  public String toString() {  //put methods Outside of Main
                if (den == 1) {
                    return num + "";
                } else {

                    return num + "/" + den;

                }

            }//close toString

     private Rational add(Rational r) {   //put methods Outside of Main

          int newNum = (this.num * r.den) + (r.num * this.den);
          int newDen = r.den * this.den;
          return new Rational(newNum, newDen);
     }//close add

    private static int gcd(int m, int n) {  //put methods Outside of Main
                if (0 == n)
                    return m;
                else
                    return gcd(n, m % n);        
            }//close gcd

    public static void main (String [] args) { //here is your Main Method.

            System.out.println("");

            // call Your Methods Accordingly. 

        } // main Closed
    } //class Closed
  1. 您已将构造函数放入main方法中。它应该在主盒子外面。
  2. 您定义的每个方法都存在于main方法中。再次出现编译错误。
  3. main您可以使用任何类object(如果实例方法)或直接使用类名称(如果静态方法)从内部调用这些方法。
于 2016-03-30T04:41:06.807 回答