簡體   English   中英

變量不會增加。 - java 中的最大公約數

[英]Variable won't increment. - Greatest Common Divisor in java

我的任務是接受 2 個分數並將它們相加,然后以最簡單的形式返回。

出於某種原因,“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);
    }
}

你總是輸入 gcd = i;

問題是在聲明的結尾你有

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

所以num = num/gcd返回 2 並且dum = dum/gcd = 2。所以你不能 go 退出 while 循環

也許你可以在 for 循環中解決 for (i =2...)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM