关注
package go.jacob.day822;
import java.util.Scanner;
public class Demo1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
String[] strs = new String[n];
//三个数分别为分子,分母,带分数的整数部分
int numerator = 0, denominator = 0, first = 0;
for (int i = 0; i < n; i++)
strs[i] = sc.next();
sc.close();
for (int i = 0; i < n; i++) {
int flag = 1, begin = 0;
if (strs[i].charAt(0) == '-') {
flag = -1;
begin = 1;
}
int tmpNumerator = flag * Integer.parseInt(strs[i].substring(begin, strs[i].indexOf("/")));
int tmpDenominator = Integer.parseInt(strs[i].substring(strs[i].indexOf("/") + 1));
if (tmpDenominator == 0)
return;
if (i == 0) {
numerator = tmpNumerator;
denominator = tmpDenominator;
} else {
numerator = numerator * tmpDenominator + tmpNumerator * denominator;
denominator *= tmpDenominator;
}
// 使用欧几里得算法求最大公约数,每次计算都要对分数进行化简,放置溢出
int factor = gcd(numerator, denominator);
if (factor == 0) {
System.out.println(0);
return;
}
numerator /= factor;
denominator /= factor;
}
// 把假分数化成带分数
first += numerator / denominator;
numerator = numerator % denominator;
// 输出结果的时候要判断:整数部分是否为0?分子书否为0?
if (first != 0)
if (numerator != 0)
System.out.println(first + " " + numerator + "/" + denominator);
else
System.out.println(first);
else if (numerator != 0)
System.out.println(numerator + "/" + denominator);
else
System.out.println(0);
}
private static int gcd(int a, int b) {
if (a == 0)
return 0;
if (a < 0)
a = -a;
if (b < 0)
b = -b;
if (a < b) {
int tmp = a;
a = b;
b = tmp;
}
if (a % b == 0)
return b;
else
return gcd(b, a % b);
}
}
查看原帖
点赞 评论
相关推荐
05-12 17:12
河南科技大学 Java 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 实习生的蛐蛐区 #
34917次浏览 274人参与
# 面试官是我前女友 #
106613次浏览 726人参与
# 计算机有哪些岗位值得去? #
11705次浏览 117人参与
# 当你面对裁员会如何? #
275655次浏览 2433人参与
# 你认为小厂实习有用吗? #
10642次浏览 142人参与
# 说说你知道的学历厂 #
25099次浏览 164人参与
# 你找工作的时候用AI吗? #
13667次浏览 184人参与
# 下班后的时间你怎么安排 #
6549次浏览 97人参与
# 哪一瞬间觉得自己长大了 #
6717次浏览 147人参与
# 携程求职进展汇总 #
559190次浏览 4258人参与
# 面试尴尬现场 #
20892次浏览 145人参与
# 中核求职进展汇总 #
20040次浏览 152人参与
# 社会教会你的第一课 #
26801次浏览 364人参与
# 应届生,你找到工作了吗 #
17322次浏览 138人参与
# 学历贬值真的很严重吗? #
21909次浏览 162人参与
# 电网笔面经互助 #
36142次浏览 351人参与
# 职场中对你有帮助的书 #
17548次浏览 203人参与
# 简历当中有水分算不算造假? #
22204次浏览 309人参与
# 如何缓解求职过程中的焦虑? #
14417次浏览 125人参与
# 哪些公司校招卡第一学历 #
62070次浏览 235人参与