我有一个学期项目将于下周到期,我正试图破解解决这个问题的方法。 问题是开发一个程序,添加用户输入的分数,直到他输入-1。
所以我的问题是:
修改 这是我的代码,问题是,它只运行4 * n个数字,我需要能够运行2 * n个数字:(如2/4或2/4 + 1/3 + 1/2)
Scanner myScanner=new Scanner(System.in);
int a;
int b;
int c;
int d;
int m = a*d + b*c;
int n = b*d;
int r = m%n;
while((a = myScanner.nextInt()) != -1)
{
b = myScanner.nextInt();
c = myScanner.nextInt();
d = myScanner.nextInt();
while (r != 0) {
m=n;
n=r;
r = m%n;
}
m = (a*d + b*c)/n;
n = (b*d)/n;
System.out.println(m);
System.out.println(n);
}
}
答案 0 :(得分:1)
可以继续读取扫描仪的输入,直到定义的消息(在这种情况下,输入-1
之前的数字对)
Scanner scanner = new Scanner(System.in);
int num1;
int num2;
while((num1 = scanner.nextInt()) != -1)
{
num2 = scanner.nextInt();
//do stuff with num1 and num2
}
A。的重点是允许来自用户的可变数量的输入,因此,除非您有理由进行硬限制,理论上它应该采用无限输入
不是在你有任何数字之前尝试计算公因子,而是在得到数字时更容易计算公因子
int newNumerator = numerator1 * denominator2 + numerator2 * denominator1;
int newDenominator = denominator1 * denominator2;
跟踪当前的分子和分母,随着您获得更多对而更新
然后可以将 A。应用于无限输入
Scanner scanner = new Scanner(System.in);
int numerator = 0;
int denominator = 0;
int tempNumer = 0;
int tempDenom = 0;
if((numerator = scanner.nextInt()) != -1)
{
denominator = scanner.nextInt();
while((tempNumer = scanner.nextInt()) != -1)
{
tempDenom = scanner.nextInt();
numerator = numerator * tempDenom + tempNumer * denominator;
denominator = denominator * tempDenom;
}
}