0

GCD、LCMを見つけるためのこのプログラム。プログラムが while ループに到達すると、問題に直面しています。私のコードを以下に示します。

public class GCDLCM {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);
        int x = sc.nextInt();
        int y = sc.nextInt();
        int a,b;
        if(x < y) {

            a = y;
            b = x;  
            while((a % b) != 0) {

                a = b;
                b = a % b;
            }
            System.out.println("GCD: "+b);
        }
        else {

            a = x;
            b = y;
            while((a % b) != 0) {

                a = b;
                b = a % b;
            }
            System.out.println("GCD: "+b);
        }

        System.out.println("LCM: "+((x * y)/b));
    }
}

エラー: スレッド「メイン」での例外 java.lang.ArithmeticException: / basicProgrammin.GCDLCM.main(GCDLCM.java:24) でゼロによる

助けてください、while ループが機能しないのはなぜですか? 前もって感謝します。

4

1 に答える 1

0

使用できますtry catch。これはプログラムの例外です。例外は、プログラムの論理的な実行時エラーです。try catch例外を処理するには、a を使用します。no を 0 で割ることはできません。no が 0 より大きいことを確認してください。

ゼロ以上で除算しようとすると次の ERROR: Exception in thread "main" java.lang.ArithmeticException: / by zero例外が発生するので、まず no が 0 より大きいことを確認してから除算を試みるか、try catch を使用して例外処理を行います。

    while((a % b) != 0) {

            a = b;
           try
       {  
           if(a>0)
        {  
               b = a % b;
         }
      }
     catch(Exception e )
     {
     System.out. print (e);
     } 
     } 
于 2014-12-06T18:01:19.527 に答える