新人求助,打印用匿名对象就行,建立对象就会除零,求指教

qqqq72858 2016-04-14 08:51:36

//【程序6】 有问题!!!!!!!!!!!!!!!!!!!!!!
//题目:输入两个正整数m和n,求其最大公约数和最小公倍数。
//1.程序分析:利用辗除法。
//如何用辗转相除法求最小公倍数???


class Function
{
private int m;
private int n;
private int yue;
private int bei;

Function(int m,int n)
{
this.m = m;
this.n = n;
yue = 0;
bei = 0;
}
/*
被除数 / 除数 = 商 ...... 余数
6497 / 3869 = 1 ...... 2628
3869 / 2628 = 1 ...... 1241
2628 / 1241 = 2 ...... 146
1241 / 146 = 8 ...... 73
146 / 73 = 2 ...... 0
因此最大公约数为:73
*/
public int getYue()
{
while(m%n !=0 || n%m !=0)
{
if (m>n && m%n !=0)
{
m = m % n;
}

else if (n>m && n%m !=0)
{
n = n % m;
}

else
{
break;
}
yue = (m>n)?n:m;
}
return yue;
}

//最小公倍数=两数之积/最大公约数=6497*3869/73=25136893/73=34431
public int getBei()
{
bei = m*n/(new Function(m,n).getYue());

return bei;
}
}

class Programme6
{
public static void main(String[] args)
{
Function f = new Function(6497,3869);

//new Function(6497,3869).getYue()
System.out.println("最大公约数为:"+f.getYue());
//new Function(6497,3869).getBei()
System.out.println("最小公倍数为:"+f.getBei());
}
}

最后打印的时候如果是如图的打印方法,打印最小公倍数的时候除零(/ by zero)报错,
但是用被注释掉的方法代替f.getYue()和f.getBei()打印方法就能打印出来
求帮助
...全文
104 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
yixiu_xinyou 2016-04-15
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
很显然,你求最大公约数的时候把里边的m,n的值改变了,再求最小公倍数的时候就报错了

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧