目录
题目:要求实现分数相减
实现:创造一个类,成员变量有分子,分母
代码:
package classwork;
/*要求:实现分数相减
//思路:弄一个结构体表示分子分母
分母找到最小公倍数,记录k
分子同乘后相减
特殊情况:1.约分 如 2/4
2.分母为 0
3.结果的分子为 0
* */
import java.util.*;
public class java_second {
public static void main(String[] args) {
fenshu num1 = new fenshu();
fenshu num2 = new fenshu();
//找到最小公倍数:利用 a*b = 最小公倍数 * 最大公约数
int result_mu = num1.getFenmu() * num2.getFenmu();
int result_zi = num1.getFenzi() * (result_mu / num1.getFenmu()) - num2.getFenzi() * (result_mu / num2.getFenmu());
int max_yueshu = calc(result_zi,result_mu);
result_mu /= max_yueshu;
result_zi /= max_yueshu;
if(result_zi == 0)
{
System.out.println(0);
}
else
{
System.out.println(result_zi + "/" + result_mu);
}
}
public static int calc(int a,int b){
//找到最大公约数
if(a%b == 0){
return b;
}
else{
return calc(b,(a%b));
}
}
}
class fenshu {
private int fenzi;
private int fenmu;
public fenshu(){
System.out.println("请输入分子");
Scanner input = new Scanner(System.in);
int a = input.nextInt();
this.fenzi=a;
System.out.println("请输入分母");
int b = input.nextInt();
while(b == 0)
{
System.out.println("分母不能为0,请重新输入");
b = input.nextInt();
}
this.fenmu=b;
}
public int getFenmu() {
return fenmu;
}
public int getFenzi() {
return fenzi;
}
}
知识点
1.类的声明
在public class 外部声明
class name{
}
// 私有成员用 private ,如 private int nums;
// 公用函数用 public 如, public void setnums(){};
2.构造函数
name(){
}
//函数名和类名相同,在创建对象时自动调用
3.创建类的变量
name name2 = new name();
//如果有构造函数,会自动调用构造函数
4.求最大公约数
辗转取余法
calc(int a , int b){
if(a%b == 0)
{
return b;
}
else
{
return calc(b,(a%b));
}
}
5.多文件
注意位置 :单文件类就放在主函数下面,方便查看
多文件就新建一个java类,然后直接引用就行