Por o case não executa os ifs

2 respostas
C

Olá a todos, alguém poderia me dizer porque o case não executa os ifs de dentro?

/*
 * maquinaEstados2.java
 *
 * Created on 23 de Abril de 2006, 11:03
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package leitordeoperacoes;

import java.util.Scanner;

/**
 *
 * @author fabio
 */
public class maquinaEstados2 {
    
    private String operador="";
    private String conjunto="";
    private String etapa="";
    private String operacao="";
    private String cancelar="";
    private String finalizar="";
    private String pausarSuspender="";
    private String fimEtapa="";
    
    public String entrada="";
    
    Scanner input = new Scanner(System.in);
    
    int estado=1;
    
    /** Creates a new instance of maquinaEstados2 */
    public maquinaEstados2() {
        inicial(estado);
    }

    private void inicial(int estado) {
        System.out.printf("Estado: %d\n", estado);
        
        switch (estado) {
            case 1: // OPERADOR ESTADO 1
                operador = input.next();
                
                if (operador.substring(0,2).equals("01")) {
                    System.out.printf("Operador Estado 1: %s", operador);
                    inicial(2);                    
                }
                
                else {
                    System.err.printf("Operador Inválido: %s", operador);
                    inicial(1);
                }
                
             case 2: // CONJUNTO
                conjunto = input.next();
                cancelar = conjunto;
                
                if (conjunto.substring(0,2).equals("02")) {
                    System.out.printf("Conjunto: %s", conjunto);
                    inicial(3);                    
                }
                
                if (cancelar.substring(0,2).equals("09")) {
                    System.out.printf("Cancelar: %s", cancelar);
                    inicial(1);
                }
                
                else {
                    System.err.printf("Conjunto Inválido: %s", operador);
                    inicial(2);
                }
                
             case 3: //LÊ OPERADOR DENOVO
                operador = input.next();
                
                if (operador.substring(0,2).equals("03")) {
                    System.out.printf("Operador Estado 3: %s", operador);
                    inicial(4);                    
                }
                
                else {
                    System.err.printf("Operador Inválido: %s", operador);
                    inicial(3);
                }
             
             case 4:
                break;
        }
    }
}

2 Respostas

BrunoBastosPJ

nunca usei switch case em java, mas em C você tinha que ter um break; no final de cada case… não seria sse o problemas?

E

realmente como citado anteriormente está faltando os break; para os
cases onde tem os if’s, já testou colocar os break’s e executar
novamente o seu código? :roll:

abraços

Criado 23 de abril de 2006
Ultima resposta 24 de abr. de 2006
Respostas 2
Participantes 3