Java - 初学者代码,添加分数

时间:2017-11-01 16:06:07

标签: java for-loop if-statement while-loop do-while

我有一个学期项目将于下周到期,我正试图破解解决这个问题的方法。 问题是开发一个程序,添加用户输入的分数,直到他输入-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);

        }

}

1 个答案:

答案 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;
    }
}