
// Metoder3.java

/******************************************************************************
/ Metoder3.java jämför tal och visar det största talet.
/
/ Påvisar potentiella fallgropar:
/
/   - Skillnaden mellan att jämföra tal som strängar eller tal.
/   - Vad som händer om man blandar metoder vars signatur skiljer sig enbart i
/     antalet in-parametrar.
/
/ Programmet demonstrerar:
/
/   - Metodöverlagring
/   - Jämförelse av strängar med String.compareTo()
/   - Metoder med obestämt antal parametrar
/   - Användning av resultat returnerat från metod
/
/*****************************************************************************/

public class Metoder3
{

    public static void main(String[] args)
    {
		// Jämför tal som strängar
		String 	s1 = "120";
		String	s2 = "2";
		String  s3 = "13";
		String 	s4;

		s4 = max (s1, s2, s3);

		System.out.println("Det största av talen " + s1 + ", " + s2 + " och "
                                 + s3 + " (jämförda som strängar) är : " + s4);
		System.out.println ();

		// Jämför tal som tal
		int 	t1 = 120;
		int		t2 = 13;
		int		t3;

		t3 = max (t1, t2);

		System.out.println("Det största av talen " + t1 + " och " + t2 + 
		                             " (jämförda som tal) är         : " + t3);
		System.out.println ();

		// Jämför tal som tal - oväntat resultat
		int 	t4 = 120;
		int		t5 = 2;
		int		t6 = 13;
		int		t7;

		t7 = max (t4, t5, t6);

		System.out.println("Det största av talen " + t4 + ", " + t5 + " och " 
		          + t6 + " (jämförda som tal) är      : " + t7 + " <== !!!!");
		System.out.println ();
    }

/******************************************************************************
/ Jämför godtyckligt antal tal (strängar) och returnerar det största av talen.
/ Jämförelsen görs som strängjämförelse.
/
/ IN : (String) ... tal : Tal att jämföra
/
/ UT : (String)         : Det största talet/strängen
/
/*****************************************************************************/
    public static String max(String ... tal)
    {
		String s = tal[0];
		int n;

		for (int i = 1; i < tal.length; i++)
		{
			n = s.compareTo (tal[i]);
			s = (n >= 0) ? s : tal[i];
		}

		return s;
	}

/******************************************************************************
/ Jämför godtyckligt antal tal och returnerar det största av talen.
/ Jämförelsen görs som taljämförelse.
/
/ IN : (int) ... tal : Tal att jämföra
/
/ UT : (int)         : Det största talet
/
/*****************************************************************************/
	public static int max(int ... tal)
	{
		int t = tal[0];
		tal[0] = 5;

		for (int i = 1; i < tal.length; i++)
			t = (t >= tal[i]) ? t : tal[i];

		return t;
	}

/******************************************************************************
/ Dummy metod som tar exakt tre parametrar => Ev. konflikt med föregående metod
/*****************************************************************************/
	public static int max(int t1, int t2, int t3)
	{
		return 3;
	}



}