用于java的Rational类可以';t运行程序

用于java的Rational类可以';t运行程序,java,intellij-idea,rational-number,Java,Intellij Idea,Rational Number,因此,我们必须创建一个Rational类,它执行以下操作。用Java创建一个包含Rational类的项目。该类表示有理数。它应该只有两个字段num和denom。它应该具有以下公共方法(以及所需的任何其他私有方法): 以num和denom(按该顺序)作为初始字段值的构造函数。如果denom为0,则将数字设置为0/1 num(getNum)的访问器 denom的访问器(getDenom) 一种toString方法,返回形式为“num/denom”(无空格)的字符串,其中num和denom具有存储值

因此,我们必须创建一个Rational类,它执行以下操作。用Java创建一个包含Rational类的项目。该类表示有理数。它应该只有两个字段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
  • 您已将构造函数放入
    main
    方法中。它应该在主盒子外面
  • 您定义的每个方法都存在于
    main
    方法中。这又是一个编译错误
  • 您可以从
    main
    内部使用任何类
    object
    (如果是实例方法)或直接使用类名(如果是静态方法)调用这些方法
    “不让我运行程序”是什么意思?运行时发生了什么?为什么不能读取错误消息<代码>文件.java:12:错误:';'预期System.out.println(“”失败的原因很明显。@SoraWebornCharoEnwase您在哪里找到错误消息的?我在邮件里什么也没看到。不管怎样,谢谢你提供的信息。@SoraweePorncharoenwase我用System.out.println(“”)修复了分号问题,但仍然没有成功。不知道从哪里开始。首先,为什么你的rational类在你的主方法中?解释这个问题。不要只留下一堆代码供别人挑选。我还提供了一些注释来解释问题@Makoto谢谢。我也将问题添加为
    文本
    。@VikrantKashyap谢谢。正如你们所知,我对Java是个新手,对整个编程也是个新手,我的课程并没有教我们如何使用像IntelliJ IDEA这样的真正的编译器,因为我们一直在使用BlueJ,但我想学习真正的编程,这样我可以自己学习更多。谢谢
    
          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