您的位置:首页 > 编程语言 > Java开发

分数加减法(Java)acm.sdut

2017-03-27 20:42 429 查看

Problem Description

编写一个C程序,实现两个分数的加减法

Input

输入包含多行数据

每行数据是一个字符串,格式是"a/boc/d"。

其中a, b, c, d是一个0-9的整数。o是运算符"+"或者"-"。

数据以EOF结束

输入数据保证合法

 

Output

对于输入数据的每一行输出两个分数的运算结果。

注意结果应符合书写习惯,没有多余的符号、分子、分母,并且化简至最简分数

Example Input

1/8+3/8
1/4-1/2
1/3-1/3


Example Output

1/2
-1/4
0


比四则运算的题要简单,但是完全要自己敲下来还是有点困难;类中引用类型还不太会用

小结:
1.由字符数组转换成整形  
int a=ch[0]-'0';
 
2.由字符串转换成整形
int  a==Integer.parseInt(字符串名);

3.由字符串转换成浮点型
double   d   =   Double.parseDouble(字符串名); 

float   f   =   Float.parseFloat(字符串名);

4.由字符串转换成字符数组
char[] ch =字符串名.toCharArray();

5.求任意两个数的最大公倍数时,要记得比较两个数绝对值的大小;

import java.util.Scanner;

public class Main {

public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {

String str = sc.next();
char[] ch = str.toCharArray();

int a = ch[0] - '0';
int b = ch[2] - '0';
int c = ch[4] - '0';
int d = ch[6] - '0';

Fs fs1 = new Fs(a, b);
Fs fs2 = new Fs(c, d);

Fs result = new Fs();
if (ch[3] == '+') {
result = fs1.add(fs2);
} else if (ch[3] == '-') {
result = fs1.sub(fs2);
}
if (result.fz % result.fm == 0) {
System.out.println(result.fz / result.fm);
} else {
System.out.println(result.fz + "/" + result.fm);
}

}
sc.close();
}
}

class Fs {
int fz, fm;

public Fs(int fz, int fm) {
this.fz = fz;
this.fm = fm;
}

public Fs() {}

public Fs add(Fs fs) {
int newfz = fz * fs.fm + fm * fs.fz;
int newfm = fm * fs.fm;
int gys = gys(newfz, newfm);
return new Fs(newfz / gys, newfm / gys);
}

public Fs sub(Fs fs) {
int newfz = fz * fs.fm - fm * fs.fz;
int newfm = fm * fs.fm;
int gys = gys(newfz, newfm);
return new Fs(newfz / gys, newfm / gys);
}

public int gys(int a, int b) {
int n = Math.max(Math.abs(a),Math.abs(b));
int m = Math.min(Math.abs(a),Math.abs(b));
int t;
while (n!= 0) {
t = m % n;
m = n;
n = t;
}
return m;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息