이 코드는 정상적으로 컴파일되지만, 실행하면 두 숫자가 예상대로 묻히고 그냥 앉아서 아무 것도하지 않습니다. 나는 인터넷을 수색하고 하루 종일이 일을했습니다. 드디어 동굴 탐험을하고 도움을 청합니다.내 유클리드 알고리즘이 매우 천천히 작동하고 있습니다.
루프백이 자동으로 실행되지 않는 문제입니까? 이것에 10 시간 후에, 나는 아무것도 발견하지 않았다.
import java.util.Scanner;
public class EA
{
public static void main (String[] args)
{
// get first integer from user
Scanner input = new Scanner(System.in);
System.out.println("Please enter the larger integer: ");
int I;
I = input.nextInt();
// get second integer from user
System.out.println("Please enter the smaller integer: ");
int J;
J = input.nextInt();
//resolve the issue of zero
while(J<1)
{
System.out.println("Can not divide by zero!");
System.out.println("Please enter new smaller integer: ");
J = input.nextInt();
//do the calculations
while(J>0)
{
int Remainder;
Remainder = I % J;
while(Remainder>0)
{
I = J;
J = Remainder;
return;
}
System.out.println("GCD is" + J);
}
}
}
}
무한 루프가 아닌 확실한 작업을 수행하고 있습니까?모든 루프에 출력을 추가하거나 한 번에 한 줄씩 단계별로 코드를 디버깅 해보십시오. –
지금까지의 가장 좋은 분석 : "ask J twice"는 코드가 정지되는 원인입니다. 그게 해결되면,'return'은 논리를 깨뜨릴 것입니다. 그리고'return' 문제가 해결되면 무한 루프가 시작될 것입니다. – SJuan76