我在运行java程序时遇到问题,该程序使用try / catch异常计算两个数字的gcd

时间:2016-07-18 17:25:23

标签: java try-catch

我尝试计算gcd而没有异常但是第一次执行代码时,它说我需要一个除以零的数字的例外。当我添加try / catch异常时,它仍然无法通过gcd计算。这是我的代码:

import java.util.Scanner;
public class methodone {
    public static void main(String[] args){
        int factor1;
        int factor2;
        int r;
        Scanner input=new Scanner(System.in);
        System.out.println("Enter 1st factor");
        factor1=input.nextInt();
        System.out.println("Enter 2nd factor");
        factor2=input.nextInt();
        while(factor1!=0){
            try{  
                r = factor1 % factor2;
                factor1 = factor2;
                factor2 = r;
            }
            catch{
                System.out.println("can't divide by zero");
            }
        }
        System.out.println("GCD is"+factor1);
    }
}

我做错了什么

2 个答案:

答案 0 :(得分:0)

        try{  
            r = factor1 % factor2;
            factor1 = factor2;
            factor2 = r;
        }catch (Exception e){
            System.out.println("can't divide by zero");
        }

编辑:这可以满足您的需求。

static int gcd(int a, int b)
{
  while(a!=0 && b!=0) // until either one of them is 0
  {
     int c = b;
     b = a%b;
     a = c;
  }
  return a+b; // either one is 0, so return the non-zero value
}

答案 1 :(得分:0)

已经有一个答案可以为您的问题提供正确的算法。我认为在这里提出另一点非常重要: 一个例外是处理异常情况。除以零是您可以轻松预测和检查的东西,即它不是例外。这意味着对于你的代码:不要捕获异常但是明确检查参数bofore你划分任何东西。

这也将避免由于其他原因引发异常的非常烦人和不必要的情况,并且您仍然警告用户您“不能除以零”。