下周我有一个学校项目要交,我正试图找到解决这个问题的方法。 问题是开发一个程序,将用户输入的分数相加,直到他键入 -1。
- 输入总是成对的正数。
- 只能使用:int、for、while、if、scanner(所以不能中断或数组)
- 最好使用 GCD,因为它需要打印 减少分数和
所以我的问题是:
- 我可以使用 while 循环直到用户使用扫描器输入 -1 吗?
- 是否可以使用“while”让用户键入“无限”(我知道在 java 中没有这样的)数字直到终止?
- 在上一个问题的代码中我写了公因数 方程式,我如何写出未知数量的公因数 变量
编辑: 这是我的代码,问题是,它只运行 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);
}
}
最佳答案
A.
可以继续读取来自扫描仪的输入,直到定义的消息(在本例中为数字对,直到输入 -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
}
B.
A. 的全部意义在于允许来自用户的可变输入量,因此除非您有硬性限制的理由,否则理论上它应该接受无限输入
C.
与其在获得任何数字之前尝试计算公因数,不如在获得数字时更容易计算公因数
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;
}
}
关于Java - 初学者代码,添加分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47059021/