Calculadora para linea de comandos en JAVA

Para realizar esta sencilla calculadora, haremos uso del método split(String regex) que aplicado sobre un String, troceará dicho String según el patrón pasado en el argumento, devolviendo un array de String con todos los trozos.

Hecho esto, solo nos queda comprobar con un switch cual ha sido el operador utilizado, y según este, mostramos el resultado.
//Ejemplo de entrada: 4 * 5 ó 5.7 + 2.2
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.IOException;
public class Calculadora {
    public static void main(String[] args) {
        String[] op = leer().split(" ");
        switch (op[1].charAt(0)) {
            case '+':
                System.out.println(Double.valueOf(op[0])+Double.valueOf(op[2]));
                break;
            case '-':
                System.out.println(Double.valueOf(op[0])-Double.valueOf(op[2]));
                break;
            case '*':
                System.out.println(Double.valueOf(op[0])*Double.valueOf(op[2]));
                break;
            case '/':
                System.out.println(Double.valueOf(op[0])/Double.valueOf(op[2]));
                break;
            default: System.out.println("Operacion incorrecta");
        }
    }
    public static String leer() {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String linea = "";
        try {
            linea = br.readLine();
        } catch (IOException e) {}
        return linea;
    }
}

Comentarios

  1. Hola, tengo una duda en el switch, por que cuando trato de correr el codigo me marca que son tipos incompatibles

    ResponderEliminar
    Respuestas
    1. Saludos, pues ha sido echar un vistazo a mi libro de cabecera, "Piensa en Java" y ya he visto el problema, lo que no se es porqué a mi me compilaba y me iba correctamente... El problema es que la estructura SWITCH es capaz de evaluar un valor entero (int) o un carácter (char) que al fin y al cabo también está relacionado con valores enteros. Yo estaba evaluando los operadores como un String "+" y esto no se debe hacer. Así que la solución ha sido cambiar el tipo del operador con charAt(0) en el SWITCH y en cada CASE comparar con un char y no con un String utilizando comillas simples '+'.

      Ya esta solucionado el ejemplo, perdón por los inconvenientes, fallo mío. ;)

      Eliminar

Publicar un comentario

Si tenéis alguna duda o sugerencia, no dudéis en comentar. ;)

Entradas populares de este blog

Autocompletado de codigo en Sublime Text

Compilar y ejecutar JAVA desde Sublime Text

Compilar y ejecutar JAVA desde Notepad++