Soluzione 3.3

Ecco una possibile soluzione. Si noti che, ai fini di una migliore organizzazione del codice, abbiamo scelto di realizzare l'algoritmo di Euclide in un metodo statico ausiliario, che viene invocato all'interno del main.
import java.util.Scanner;

public class MCDTester
{
    public static void main(String[] args)
    {
	Scanner in = new Scanner(System.in);

	System.out.print("Inserire due interi positivi m ed n: ");
	int m = in.nextInt();
	int n = in.nextInt();
	
	// controllo dell'input: verifica che i numeri siano positivi
	if (m <= 0 || n <= 0)
	    {
		if (m <= 0)
		    System.out.println("m = " + m + ": ingresso non ammesso");
		if (n <= 0)
		    System.out.println("n = " + n + ": ingresso non ammesso");
		return;  //attenzione: l'effetto di questo enunciato e` di 
	    }            //terminare l'esecuzione del metodo main e quindi
	                 //dell'intero programma


	//invoca il metodo statico ausiliario EuclideMCD (cfr. piu` sotto)
	int mcd = EuclideMCD(m,n);  

	// Stampa su output standard
	System.out.println("MCD(" + m + "," +	n + ") = " + mcd);
    }


    public static int EuclideMCD(int m, int n)
    {
	// Ordinamento
	int i = m;
	int j = n;
	if (m > n) // pongo i > j
	    {
		i = n;
		j = m;
	    }
	
	// Algoritmo di Euclide
	int tmpInt;
	while ((tmpInt = i % j) != 0) //attenzione! qui succedono due cose:
	    {                         //1.si assegna il valore i%j a tmpInt 
                                      //2.si controlla che tmpInt sia non-nulla
		i = j;
		j = tmpInt;
	    }
	return j;
    }
}