没明白你的具体意思,这个类不是已经有了吗?还想干吗?
不过这个类写得实在是不敢恭维,连基本的Java规范都没遵守,还存在分母为0的BUG!

解决方案 »

  1.   

    上面的程序只是对已有的二组数frac1.set(4,5);frac2.set(2,3)进行了加法,现在要建立5组数,显示出这5组分数,并对其中的任意两组可以进行加减乘除(只作加就可以了),和比较(是否相等),要求可以任意删除这5组分数的任意一组,并可任意选两组进行运算。可以不用GUI,用也可以!
    to: jiangnanyuzi 我刚学JAVA,懂的很少,所以来请教!
      

  2.   

    修改类名为Fraction增加求公约数的方法:
    private static int measure(int a,int b){
      for(i=Math.min(a,b);i>1;i--){
        if((a%i==0)&&(b%i==0)) return i;
      }
      return 1;
    }修改add()方法如下:
    public void add(Fraction f){
      iDen *= f.iDen;
      iNum = iNum * f.iDen + f.iNum * iDen;
      iMeasure = measure(iDen,iNum);
      iDen /= iMeasure;
      iNum /= iMeasure;
    }增加比较方法如下:
    public boolean compare(Fraction f){
      int a = iNum*f.iDen;
      int b = iDen*f.iNum;
      return (a==b);
    }
      

  3.   

    分母为0的BUG自己解决吧,还有属性最好设为private,并提供get/set方法
      

  4.   

    这是我刚写的输入5组分数那部分,但是提示20行不匹配的类型,还有结果打印不出来,请帮助修改。谢谢!import java.io.*;
    public class test 
      {
      public static void main( String args[] )throws Exception
        {
        
        BufferedReader br = new BufferedReader
    (new InputStreamReader(System.in));
    String[] s= new String[5];
    for (int i=0;i<=5; i++)
    {
    System.out.println("Pls input a number");
    System.out.flush();

    s[i] = br.readLine();
    }
    fraction frac[];
        frac=new fraction[5];
        for(int i=0;i<5;i++)
        frac[i] = Integer.parseInt(s[i]);
       

    for (int i=0;i<5; i++)
    System.out.println("your input is:"+frac[i].output);
        
        System.exit(0);  // ends the program
        } // end main method  } // end class test
      

  5.   

    关键在于你在控制台输入的是什么?不是输入的整数,却用
    frac[i] = Integer.parseInt(s[i]);
    自然会出错!
    还有,最好用s[i] = br.readLine().trim();
      

  6.   

    我输入的是整数呀,要求输入的就是整数,打印出5组分数,就是实现这个功能,您能看看我源程序吗?建立的是数组,但是我不知道怎么把输入的整数打印成分数,我只会建立固定的数组打印出来,但是要求是输入数组,他自己打印出来。或者你看看下面的程序:public class outcopy 
      {
      public static void main( String args[] )
        {
        String[] s = new String[5];
        fraction frac[];
        frac=new fraction[5];
        for(int i=0;i<frac.length;i++)
        frac[i]=new fraction();
         
        frac[0].set(1,3);
        frac[1].set(1,4);
        frac[2].set(1,5); 
        frac[3].set(2,5);
        frac[4].set(1,4);
        for(int i=0;i<frac.length;i++)
        {frac[i].output();}
        
        System.exit(0);  // ends the program
        } // end main method  } // end class test
    这个能打印出我建立的那5组数成分数,但是现在要求是写入5组数,输出后成5组分数显示出来,利用最前面的提供的 fraction class.
      

  7.   

    import java.io.*;
    public class test 
      {
      public static void main( String args[] )throws Exception
    {
        
    BufferedReader br = new BufferedReader
    (new InputStreamReader(System.in));
    String[] s= new String[6];
    for (int i=0;i<=5; i++)
    {
    System.out.println("Pls input a number");
    System.out.flush();

    s[i] = br.readLine();
    }

    fraction frac[] = new fraction[6];
    for(int i=0;i<5;i++)
    frac[i] = new fraction(Integer.parseInt(s[i].toString().trim()),2);

    for (int i=0;i<5; i++)
    System.out.println("your input is:"+frac[i]);
        
    System.exit(0);  // ends the program
    } // end main method  } // end class test
      

  8.   

    你每行只能输入整数!
    然后才能输出分数,在fraction(Integer.parseInt(s[i].toString().trim()),2);我加数字2是为了使用fraction类的构造函数fraction(int iTop, int iBot)!
      

  9.   

    to hpy 121:
    你写的程序可以打印出来,但是你没有看见我前面的要求,要用CLASS FRACTION,去建立分数,我前面写了一个是固定了5组数,我只会打印出固定的数组,现在要求是自己输入5组数,并打印出来,我就不会了,快帮帮忙吧,看来今晚睡不了觉了。
      

  10.   

    to jiangnayuzi & hpy, 你们将这两个程序运行一下就知道了,我将那5组数定义在了test.java(第二个程序)里了,但是老师要求是自己输入5组数,显示出来的格式跟我定义在程序中的格式一样,实际上这个程序就是定义一个分数,要求把输入的数打印成分数。但是我不会写呀!我定义的那5组数
        frac[0].set(1,3);
        frac[1].set(1,4);
        frac[2].set(1,5); 
        frac[3].set(2,5);
        frac[4].set(1,4);
    打印出来就是 1/3 1/4 1/5 2/5 1/4, 现在要求是比如,运行java test(第二个程序),提示输入一个数(或数组)【我就是这里搞不懂所以写不出来】:
    2
    输入一个数
    5
    生成
    2/5
    再输入
    3
    输入一个数
    9
    生成
    3/9
    一共要求5组,你们看看老师给的FRACTION(第一个程序),里面定义了输出的格式,我现在搞不懂怎么写这个程序定义数组,能让他用上.OUTPUT METHOD(FRACTION里),输入成分数格式,找了好多例子还是没找到相似的。我学JAVA两周,脑子里乱七八糟没头绪。唉,真的不是这块料。
    你们明白了吗?就是请帮我看看TEST的程序,不要固定的数组,让用户自己输入,但生成分数的形式跟那几个固定的数组生成的一样,就是说把那几个数组人工输入,显示出分数来。CLASS FRACTION// fraction class in its own file
    // allows setting and output of fractions 
    public class fraction 
      {
      protected int iNum;
      protected int iDen;  fraction()
        {
        iNum = 1;
        iDen = 1;
        }  fraction(int iTop, int iBot)
        {
        set(iTop, iBot);
        }  public void set(int iTop, int iBot)
        {
        iNum = iTop;
        iDen = iBot; 
        } // set  public void add(fraction otherFrac, fraction answer)
        {
        int iNewDen = iDen * otherFrac.iDen;
        int iNewNum = iNum * otherFrac.iDen + otherFrac.iNum * iDen;    answer.set(iNewNum, iNewDen);
        }  public String toString()
        {
        return (“” + iNum + “/” + iDen);
        }  public void output()
        {
        System.out.print(iNum + "/" + iDen); 
        } // end output  }  // end class fraction主程序 TESTpublic class test 
      {
      public static void main( String args[] )
        {
        String[] s = new String[5];
        fraction frac[];
        frac=new fraction[5];
        for(int i=0;i<frac.length;i++)
        frac[i]=new fraction();
         
        frac[0].set(1,3);
        frac[1].set(1,4);
        frac[2].set(1,5); 
        frac[3].set(2,5);
        frac[4].set(1,4);
        for(int i=0;i<frac.length;i++)
        {frac[i].output();}
        
        System.exit(0);  // ends the program
        } // end main method  } // end class test
      

  11.   

    按照你的说明,是提示输入一个分子,输入后再提示输入一个分母,输入后将分数打印出来。反复执行5次。如果你的意思确实是这样的话,以下代码实现此功能:
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        for(int i=0;i<5;i++){
          try{
            System.out.print("Please input the numerator:");
            int numerator = Integer.parseInt(br.readLine().trim());
            System.out.print("Please input the denominator:");
            int denominator = Integer.parseInt(br.readLine().trim());
            fraction f = new fraction(numerator,denominator);
            f.output();
            System.out.println();
          }
          catch(IOException e){
            e.printStackTrace();
          }
          catch(Exception e){
           System.out.println("Input error!");
          }
        }
      

  12.   

    我犯了个错误,代码应该如下:
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        fraction f = new fraction();
        for(int i=0;i<5;i++){
          try{
            System.out.print("Please input the numerator:");
            int numerator = Integer.parseInt(br.readLine().trim());
            System.out.print("Please input the denominator:");
            int denominator = Integer.parseInt(br.readLine().trim());
            f.set(numerator,denominator);
            f.output();
            System.out.println();
          }
          catch(IOException e){
            e.printStackTrace();
          }
          catch(Exception e){
           System.out.println("Input error!");
          }
        }
      

  13.   

    谢谢!但是你的程序太复杂了,我还没学这么多(上了4次课),所以我用了:
    import java.io.*;
    public class test 
      {
      public static void main(String args[])throws Exception
    {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        fraction f = new fraction();
        for(int i=0;i<5;i++){
            System.out.print("Please input the numerator:");
            int numerator = Integer.parseInt(br.readLine().trim());
            System.out.print("Please input the denominator:");
            int denominator = Integer.parseInt(br.readLine().trim());
            f.set(numerator,denominator);
            f.output();
            System.out.println();
         }
        }
        }
    但是现在提示错误是: class out, identifier(expected),而且错误提示在65line,这个程序根本没那么长,我认真看看的确找不出哪有错,您能再帮助看看吗?
      

  14.   

    晕,是在编译时出错还是运行时?找出到底是在哪个文件的哪一行!65line并不是指你这个test文件里的
      

  15.   

    对不起,DOS模式下提示是第9行,不能解析SYMBOL,SYMBOL: class fraction, location: test.java fraction f = new fraction();
      

  16.   

    那是你没有把类fraction的文件和test文件放在同一个包里啊,如果你的test文件能编译的话