De if a switch

Como le podría hacer para cambiar de if a switch este programa en Java:

Introduces 3 medidas y te dice que tipo de triángulos es:

int lado1, lado2,lado3;

Scanner input = new Scanner(System.in);

System.out.print("Medida lado 1: ");
lado1 = input.nextInt();

System.out.print("Medida lado 2: ");
lado2 = input.nextInt();

System.out.print("Medida lado 3: ");
lado3 = input.nextInt();

if (lado1==lado2 && lado1==lado3)
{
System.out.println("Equilatero");
}
else
{
if (lado1 != lado2 && lado2 != lado3 && lado1 != lado3)
{
System.out.println("Escaleno");
}

else
{
System.out.println("Isosceles");
}
}
}
}
}

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

En java las etiquetas que se

En java las etiquetas que se usan en los bloques del switch deben de ser constantes, si encuentras una expresión que resulte en un valor constante lo puedes usar ahí.

No se me ocurre ninguno pero si lo encuentras seria así:

int x = //magia aquí ( jejej ya me gustó)

switch ( x )  {
    case ??? :  tipo = "Equilatero"; break;
    case ??? :  tipo = "Escaleno"; break;
    default: tipo  = "Isosceles" ; break;
}
out.println( tipo );

Por ejemplo para el equilatero podría ser a - b + a - c pero me parece difícil encontrar una que aplique para al menos dos tipos de triangulos.

Espero que esto te sirva

Imagen de paranoid_android

Lógica del Switch

Hola.
El switch recibe una sola condición y compara el resultado, entonces tendrías que reducir las 3 condiciones a una sola.
Posiblemente asignando condiciones separadas usando un valor numérico y usando el operador ternario.
int valor=(condición)?valor1:valor2;

int lado1XLado2 = (lado1==lado2) ? 1:0;
// Agregas las condiciones necesarias...
// Efectúas un tipo de operación aritmética
int tipoTriangulo =  lado1XLado2 +  lado1XLado3 + lado2XLado3 +...;
switch (tipoTriangulo){
                case 1: // el triangulo es de tipo X
                break;
}
Imagen de ezamudio

así déjalo

para qué lo quieres cambiar?

Imagen de javatlacati

compilador...

Exacto.. puede que el compilador decida que es más optimo usar if's y lo convierta al código que al decompilarse produzca los if... la complejidad en términos de O(n) no cambiará, ni el tiempo de ejecución. Así que.. sería mejor que nos contaras un poco la razón del cambio :)