java大佬帮我看看这个程序哪里错了呀

2025-02-26 17:08:22
推荐回答(2个)
回答1:

问题在于你for循环的 i++ 这里,按照你的逻辑,你是想符合a%i==0&&b%i==0这个条件的时候将i赋值为2,然后再循环,但是i++会在你所有方法执行完后再执行,continue是跳过大括号里他之后的代码,i++还是会执行。所以你可以改成这样:

Scanner scanner=new Scanner(System.in);
System.out.println("请输入第一个数:");
int a=scanner.nextInt();
System.out.println("请输入第二个数:");
int b=scanner.nextInt();
int c=1;
int min=afor(int i=2;i<=min;){
if(a%i==0&&b%i==0){
c*=i;
b=b/i;
a=a/i;
i=2;
continue;
}
i++;
}
System.out.println("最大公约数为:"+c);

回答2:

把循环里面的 i=2; 改成 i=1;