当前位置: 首页 > 知识库问答 >
问题:

变量不会递增。-java中的最大公约数

越朗
2023-03-14

我的任务是接受两个分数并求和,然后以最简单的形式返回。

出于某种原因,“gcd=i执行时不运行,因此我的程序在运行时进入无限循环。

import java.util.*;

class fraction {
    public static void main(String[] args) {
        int num1, den1, num2, den2;
        Scanner sc = new Scanner(System.in);
        /* System.out.print("Enter first numerator:");
        num1 = sc.nextInt();
        System.out.print("Enter first denominator:");
        den1 = sc.nextInt();
        System.out.print("Enter second numerator:");
        num2 = sc.nextInt();
        System.out.print("Enter second denominator:");
        den2 = sc.nextInt(); */

        num1 = 1;
        den1 = 2;
        num2 = 1;
        den2 = 2;
        System.out.print(num1 + "/" + den1 + " + " + num2 + "/" + den2 + " is equal to ");

        int num = num1 * den2 + den1 * num2;
        int dum = den1 + den2;
        System.out.println(num + "/" + dum);
        System.out.println(num % dum);

        int gcd = 2;
        while (num % dum == 0) {
            for (int i = 1; i < num && i < dum; ++i) {
                if (num % i == 0 && dum % i == 0) {
                    gcd = i;//This line.
                    System.out.println(gcd + " " + i);
                }
            }
                
            num = num / gcd;
            dum = dum / gcd;
        }

        System.out.println(num + "/" + dum);
    }
}

共有1个答案

危寒
2023-03-14

你总是输入gcd=i;

问题是,在陈述的最后,你有

num1    1
den1    2
num2    1
den2    2
num     2
dum     2
gcd     1

因此num=num/gcd返回2,并且dum=dum/gcd=2。所以你不能走出while循环

也许你可以在for循环中解决(i=2...)

 类似资料:
  • 问题内容: 我已经看到存在这样的功能,即。是否有在Java中的其它功能也适用于其他类型的工作(,或)?似乎这是有意义的(带有各种重载),但是它不存在。在别的地方吗? (请不要将此问题与“我如何自己实现”混淆!) 问题答案: 对于int和long而言,作为原语,并非如此。对于Integer,有人可能写了一个。 假设BigInteger是int,Integer,long和Long的(数学/函数)超集,

  • 我试图让这个程序计算两个用户输入的正整数(x和y)的最大公约数(GCD)。set函数不返回可以索引的列表。关于如何找到GCD有什么建议吗?

  • 计算两个或两个以上数字/数字数组的最大公约数。 内部的 _gcd 函数使用递归。基本情况是,当 y 等于 0 的情况下,返回 x 。否则,返回 y 的最大公约数和x / y的其余数。 const gcd = (...arr) => { const _gcd = (x, y) => (!y ? x : gcd(y, x % y)); return [...arr].reduce((a, b)

  • 我遵循了这个计算给我的逻辑,但它似乎只会给我一个无尽的循环。我能得到一些帮助吗? 我应该用的逻辑是: 求两个正整数x和y的最大公约数的公式遵循欧几里德算法如下:1。重复从y中减去x,直到y 这是我的代码: 编辑:解决了,我把静态方法改成这样:

  • 问题内容: 好吧,对于我正在做的事情,我需要增加变量名称,例如,int Taco1 = 23432 ..... int Taco2 = 234235656 ..... int Taco3 = 11111 ....... 但是我需要它是一个像 尝试让我的变量名每次自动递增1,这样它们就不会覆盖自己。如果这不可能,那么我深表歉意。 问题答案: 您不能用Java做到这一点,更重要的是,您不想这样做,因为

  • 本文向大家介绍java求最大公约数与最小公倍数的方法示例,包括了java求最大公约数与最小公倍数的方法示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了java求最大公约数与最小公倍数的方法。分享给大家供大家参考,具体如下: Gongyueshu.java文件: 此处需要由控制台输入参数,eclipse环境运行的设置步骤为Run》Run Configurations进入运行的调试配置界面