Java - Acumulador Java

 
Vista:
sin imagen de perfil
Val: 25
Ha aumentado su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

Acumulador Java

Publicado por David (15 intervenciones) el 26/01/2018 18:34:56
Buenas tardes:

Tengo que hacer este ejercicio pero estoy bloqueado y no se como continuar, si alguien puede ayudarme, aquí dejo el link con el enunciado del ejercicio https://ibb.co/dg3XYb

Y esto es lo que tengo hecho, no es mucho pero no se como plantearlo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
public class Acumulador {
 
   private long valor;
 
    public void add(int cantidad) {
        valor= cantidad;
 
    }
 
    public void add(String expresion) {
        int resultado=0;
        if(expresion == "+")
            valor =resultado;
        if(expresion == "-")
            valor =resultado;
        if(expresion == "/")
            valor =resultado;
        if(expresion == "*")
            valor =resultado;
        if(expresion == "=")
            valor =resultado;
         else {
            throw new RuntimeException("No es válida.");
 
    }}
 
    public long getValor() {
        return valor;
    }
}
 
public class Programa {
 
    public static void main(String[] args) {
        Acumulador unAcumulador = new Acumulador();
unAcumulador.add( 7 );
System.out.println(unAcumulador.getValor()); // Debe escribir el valor 7
unAcumulador.add( " 7 + 5" ); // Debe acumular la cantidad 12
System.out.println(unAcumulador.getValor()); // Debe escribir el valor 19
unAcumulador.add( " 2 -+ 5" ); // Debe lanzar una excepción
unAcumulador.add( " 2 / 0" ); // Debe lanzar una excepción
unAcumulador.add( " 4 * 5" ); // Debe acumular la cantidad 20
System.out.println(unAcumulador.getValor()); // Debe escribir el valor 39
    }
 
}



Muchas gracias de antemano
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 25
Ha aumentado su posición en 3 puestos en Java (en relación al último mes)
Gráfica de Java

Acumulador Java

Publicado por David (15 intervenciones) el 13/02/2018 12:22:32
Ya he conseguido resolverlo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
public class Acumulador {
 
   private long valor;
 
   public long getValor() {
        return valor;
    }
    public void add(int cantidad) {
        valor+= cantidad;
 
    }
 
     public void add(String expresion) {
        valor+= calcularExpresionBinaria(expresion);
 
    }
     public static double calcularExpresionBinaria(String exp) {
        final String SP = "\\s*";
        final String N = "(\\d+)";
        final String OP = "([\\+\\-\\*\\/])";
        Pattern patron = Pattern.compile(SP + N + SP + OP + SP + N + SP);
        Matcher matcher = patron.matcher(exp);
        try{if (matcher.matches()) {
 
            String operando1 = matcher.group(1);
            String operador = matcher.group(2);
            String operando2 = matcher.group(3);
            double op1 = Double.parseDouble(operando1);
            double op2 = Double.parseDouble(operando2);
           switch(operador) {
                case "+": return op1+op2;
                case "-": if (operador=="-+") throw new ArithmeticException();return op1 -+ op2;
                case "*": return op1 * op2;
                case "/":  if (op2 == 0) throw new ArithmeticException(); return op1 / op2;
                default: assert false;
            }
            return 0.0;
 
        }}catch(ArithmeticException ex) {
            System.out.println("No es válida.");}
       return 0;
}}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar