java 中 “找不到符号”的错误

[复制链接]
查看11 | 回复5 | 2016-10-5 18:51:41 | 显示全部楼层 |阅读模式
程序要求:定义一个类Fact表示无符号有理数(分数),成员有分子(num)和分母(den)
构造函数2个
一组get方法
一组set方法
方法:
-比较两个分数的大小,结果为boolen的值
-对分数进行约分(分子分母同时除以最大公约数)
-对两个分数进行通分(先约分)
-两个分数相加,结果为不可约数(先通分,然后再约分)
定义testFact类,
创建Fact对象,并调用各个方法
本人的程序:
import java.util.*;
class Fact
{
private int num;
private int den;
public Fact(int m,int n)
{
this.num=m;
this.den=n;
}
public Fact(){}
public void get(Fact a)//get方法
{
System.out.println("该分数为:"+this.num+"/"+this.den);
}
public Fact set(Fact x)//set方法
{
Scanner a=new Scanner(System.in);
System.out.println("Input num:");
int p=a.nextInt();
System.out.println("Input den:");
int q=a.nextInt();
this.num=p;
this.den=q;
return this;
}
public boolean cmp(Fact m,Fact n)//比较大小
{
set(m);
get(m);
set(n);
get(n);
int x=m.num*n.den;
int y=m.den*n.num;
if(x*y==0)
{
return false;

}
else
{
return true;

}
}
public int gcd(int a,int b)//最大公约数
{
int m,gcd;
m=b;
while(a%b!=0)
{
b=a%b;
a=m;
}
gcd=b;
return gcd;
}
public Fact yf(Fact m)//约分
{
return Fact(m.num/gcd(m.num,m.den),m.den/gcd(m.num,m.den));
}
public void tf(Fact m,Fact n)//通分
{
m=Fact(m.num/gcd(m.num,m.den),m.den/gcd(m.num,m.den));
n=Fact(n.num/gcd(n.num,n.den),n.den/gcd(n.num,n.den));
m=Fact(m.num*n.den,m.den*n.den);
n.fact(m.den*n.num,m.den*n.den);
}
public Fact add(Fact m,Fact n)//相加
{
tf(m,n);
Fact x=new Fact(m.num+n.num,m.den+n.den);
return yf(x);
}
}
public class TestFact
{
public static void main(String[] args)
{
Fact a,b;
set(a);
get(a);
set(b);
get(b);
cmp(a,b);
System.out.println("a约分之后为:"+get(yf(a)));
System.out.println("b约分之后为:"+get(yf(b)));
tf(a,b);
System.out.println("a通分之后:"+get(a));
System.out.println("b通分之后:"+get(b));

add(a,b);
}
}
多次出现找不到符号的错误,请高手指教!请尽量在我的程序上修改

回复

使用道具 举报

千问 | 2016-10-5 18:51:41 | 显示全部楼层
lz需要再多多努力,以下代码仅供参考:import java.util.Scanner;class Fact {
private int num;
private int den;
public Fact() {
}
public Fact(int num, int den) {
this.num = num;
this.den = den;
}
public int getDen() {
return den;
}
public void setDen(int den) {
回复

使用道具 举报

千问 | 2016-10-5 18:51:41 | 显示全部楼层
input这个变量是输入流,toLowerCase()是将字符串转换成小写,看该程序的用意,是希望从控制台输入密钥,然后打印出来,你设置的输入流,但没有让输入流接收数据,应该先读:input.readLine()具体方法,你看一下API。你应该先把数据放入这个流中,然后才能取到数据。而readLine就是接收数据。先接收这个流里面才有数据
回复

使用道具 举报

千问 | 2016-10-5 18:51:41 | 显示全部楼层
说实话,java的面向对象你一点都没学到。按照你的说明给你写的新代码,你看看:import java.util.*;class Fact { private int num; private int den; public Fact() { } public Fact(int num, int den) {th
回复

使用道具 举报

千问 | 2016-10-5 18:51:41 | 显示全部楼层
天啦,看了你的程序。才知道什么叫稀烂的JAVA!!!!(估计是学C太多了吧) TestFact 这个类居然写成这个样子。不好意思,我真的是看不下去了。楼主也许生气了,可是说白了,谁写这个main方法的人简直就是没见过java的人,还得认真学啊!
回复

使用道具 举报

千问 | 2016-10-5 18:51:41 | 显示全部楼层
整个程序的思维逻辑是错误的!set(a);get(a);set(b);get(b);这些方法调用的不对,需要对象想用,例如a.set(a);这样,但是你没有实例化, Fact a=new Fact();Fact b=new Fact();a.set(a);a.get(a);b.s
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行