上面的程序只是对已有的二组数frac1.set(4,5);frac2.set(2,3)进行了加法,现在要建立5组数,显示出这5组分数,并对其中的任意两组可以进行加减乘除(只作加就可以了),和比较(是否相等),要求可以任意删除这5组分数的任意一组,并可任意选两组进行运算。可以不用GUI,用也可以! to: jiangnanyuzi 我刚学JAVA,懂的很少,所以来请教!
修改类名为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); }
分母为0的BUG自己解决吧,还有属性最好设为private,并提供get/set方法
这是我刚写的输入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();
System.exit(0); // ends the program } // end main method } // end class test 这个能打印出我建立的那5组数成分数,但是现在要求是写入5组数,输出后成5组分数显示出来,利用最前面的提供的 fraction class.
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
你每行只能输入整数! 然后才能输出分数,在fraction(Integer.parseInt(s[i].toString().trim()),2);我加数字2是为了使用fraction类的构造函数fraction(int iTop, int iBot)!
to hpy 121: 你写的程序可以打印出来,但是你没有看见我前面的要求,要用CLASS FRACTION,去建立分数,我前面写了一个是固定了5组数,我只会打印出固定的数组,现在要求是自己输入5组数,并打印出来,我就不会了,快帮帮忙吧,看来今晚睡不了觉了。
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();
System.exit(0); // ends the program } // end main method } // end class test
按照你的说明,是提示输入一个分子,输入后再提示输入一个分母,输入后将分数打印出来。反复执行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!"); } }
我犯了个错误,代码应该如下: 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!"); } }
谢谢!但是你的程序太复杂了,我还没学这么多(上了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,这个程序根本没那么长,我认真看看的确找不出哪有错,您能再帮助看看吗?
to: jiangnanyuzi 我刚学JAVA,懂的很少,所以来请教!
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);
}
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
frac[i] = Integer.parseInt(s[i]);
自然会出错!
还有,最好用s[i] = br.readLine().trim();
{
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.
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
然后才能输出分数,在fraction(Integer.parseInt(s[i].toString().trim()),2);我加数字2是为了使用fraction类的构造函数fraction(int iTop, int iBot)!
你写的程序可以打印出来,但是你没有看见我前面的要求,要用CLASS FRACTION,去建立分数,我前面写了一个是固定了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
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!");
}
}
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!");
}
}
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,这个程序根本没那么长,我认真看看的确找不出哪有错,您能再帮助看看吗?