我尝试计算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);
}
}
我做错了什么
答案 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你划分任何东西。
这也将避免由于其他原因引发异常的非常烦人和不必要的情况,并且您仍然警告用户您“不能除以零”。