Ir para conteúdo
Fórum Script Brasil
  • 0

Instanceof não reconhece nenhuma instância


Zkizo

Pergunta

Eu tenho uma classe Circuito, que possui duas malhas. Eu tenho o método getCircuito que chama getMalha que chama getRamo. E é nesse getRamo que eu pergunto qual dispositivo a pessoa quer inserir de um ponto a ou b. Nesse esquema:

0----1----2

|---- |--- |

|---- |--- |

| ----|--- |

3----4----5

Note que ai em cima eu tenho duas malhas, cada uma formada por 4 ramos. Eu limitei no programa que cada malha teria só 1 dispositivo, por isso declarei ramo como ramo[1][4]. Na mein eu só chamo setCircuito que inicializa o circuito preenchendo devidamente a malha, que por sua vez inicializa o vetor ramo. E é nesse ramo que há problema, pois ramo é Dipositivo que insere as subclasses de Dispositivo. Pra fazer a função leiDasMalhas eu precisa saber qual dispositivo está em ramo[j], porque é a partir dessa informação que eu preencherei eqLinear e por sua vez sistemaLinear.

Muitos métodos não estão implementados, pois estou fazendo por partes.

class Circuito {  
      
        private char[][] circuito;  
        private Malha[] malha;  
        private int[][] sistemaLinear;  
        private int qntMalha;  
        public Circuito(){         
                           qntMalha = 2; // impede que o usuário aumente o número de malhas  
                           malha = new Malha[2]; // aloca espaço para as malhas;  
                           malha[0] = new Malha();  
                           malha[1] = new Malha();  
                           sistemaLinear = new int[2][3];  
                           circuito = new char[5][11];  
                           int cont = 0; // variável de ajuda  
                           for (int i = 0; i < 5; i++) {  
                               for (int j = 0; j < 11; j++) {  
                                   if (( i==0) || (i==4)) {  
                                         if ((j == 0)||(j == 5)||(j == 10)){  
                                              circuito[i][j] = (char) (cont+48); // tabela ascii  
                                              cont++;  
                                              }  
                                         else  
                                             circuito[i][j] = '-';  
                                             }  
                                   else  
                                       if ((j == 0)||(j == 5)||(j == 10))  
                                          circuito[i][j] = '|';  
                                       else  
                                           circuito[i][j] = ' ';  
                                           }  
                                           }  
                             
                             
    }  
                       
        public void setCircuito(){  
           
         for (int i = 0; i < 5; i++) {  
             for (int j = 0; j < 11; j++)   
                 System.out.printf ("%c", circuito[i][j]);  
                 System.out.printf ("\n");  
             }  
           
    }  
      
        public void getCircuito(){  
         System.out.print ("Preenchendo Malhas: \n\n");  
         System.out.print ("Fim - 0\n");  
         System.out.print ("Diodo - 1\n");  
         System.out.print ("Indutor - 2\n");  
         System.out.print ("Resistor - 3\n");  
         System.out.print ("Capacitor - 4\n");  
         System.out.print ("Fonte de Tensao - 5\n");  
         System.out.print ("Fonte de Corrente - 6\n");  
         System.out.print ("Malha 1\n");  
         malha[0].getMalha(1,2,5,4);  
         System.out.print ("Malha 2\n");  
         malha[1].getMalha(2,3,6,5);  
    }  
      
        public void determinantes(int sistemaLinear[][], int corrente1[], int corrente2[]){  
          
          
    }  
      
        public void resolverSistemaLinear(){  
        int[] corrente1, corrente2;  
          
        corrente1 = new int[1];  
        corrente2 = new int[1];  
          
        malha[0].leiDasMalhas();  
        malha[1].leiDasMalhas();  
        determinantes(sistemaLinear, corrente1, corrente2);  
          
    }  
      
          
    }  
      
      
      
      
      
    class Malha {  
        Scanner input = new Scanner(System.in);  
        private int corrente;  
        private Dispositivo[][] ramo;  
        private int[] eqLinear;  
          
        public Malha(){  
                   corrente = 0;  
                   eqLinear = new int[3];  
                   ramo = new Dispositivo[1][4];  
                   }  
                     
        public void getMalha(int a, int b, int c, int d){  
                 getRamo(a,b,0);  
                 getRamo(b,c,1);  
                 getRamo(c,d,2);  
                 getRamo(d,a,3);           
         }  
           
           
        void realoqueDispositivo(Dispositivo p, int tipo){  
            int util;  
      
            switch (tipo) {  
                       case 1:  
                             System.out.println("Declarei um DIODO\n");  
                             p = new Diodo();  
                             break;  
                       case 2:  
                             System.out.println("Digite o valor da resistencia:");  
                             util = input.nextInt();  
                             p = new Resistor(util);  
                             break;  
                       case 3:  
                             p = new Indutor();  
                             break;                     
                       case 4:  
                             p = new Capacitor();  
                             break;  
                       case 5:  
                             p = new FonteDeCorrente();  
                             break;                       
                       case 6:  
                             p = new FonteDeTensao();  
                             break;                     
                             }  
      
        }  
      
      
        public void getRamo(int a, int b, int cont){  
            int aux;  
            int tam;  
           
            System.out.printf("Dispositivos do ponto %d ao ponto %d\n", a, B);  
            System.out.printf("\tDigite o numero referente ao dispositivo desejado: \n");  
            aux = input.nextInt();  
            realoqueDispositivo(ramo[0][cont], aux);       
            }  
      
        public void leiDasMalhas(){  
    System.out.println("VAMOS TESTAR");  
            for(int j=0; j<4; j++){  
                 if(ramo[0][j] instanceof Resistor)  
                     System.out.println("resistor");  
                 if (ramo[0][j] instanceof Diodo)  
                      System.out.println("diodo");  
                }  
        }  
    }  
          
      
      
      
      
    abstract class Dispositivo {  
       protected int corrente;  
       protected int tensao;  
       protected int malha;  
       public Dispositivo() {  
           corrente = 0;  
           tensao = 0;  
           malha = 0;  
       }  
       public void setDispositivo(){  
             
       }  
       public void getTensao(){  
             
       }  
       public void getCorrente(){  
             
       }  
       public void setMalha(){  
             
       }  
       public void getMalha(){  
             
       }  
    }  
      
      
      
      
    public class Main {  
      
        public static void main(String[] args) {  
            Circuito circuito = new Circuito();  
        
            circuito.setCircuito();  
            circuito.getCircuito();  
        }  
    }

Editado por kuroi
Adicionar tag CODE
Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...