Erro método

2 respostas
J

Por que o método calcula está com erro?

import java.io.*;

public class Principal {  


	public static void main(String[] args) {  


		int []x = new int[63] ;
		int []y = new int [7];
		int [][] w = new int [63][7];
		int indice = 0;
		int  alvo = 1;

		File file = new File("c:/a1.txt"); 
		int [] t = {1,-1, -1, -1, -1, -1, -1};

		try { 

			FileReader reader = new FileReader(file);  
			BufferedReader input = new BufferedReader(reader);  
			String linha;  
			//Atribui -1 ao caracter . e 1 ao caracter #.
			while ((linha = input.readLine()) != null) {  
				for (int i = 0; i<linha.length(); i++){
					if (linha.charAt(i)== '.'){
						x[indice]= -1;
					}else if (linha.charAt(i)=='#'){
						x[indice] = 1;
					}
					indice = indice +1;
				} 
				System.out.println(linha);  
			}
			input.close();  
		} catch (IOException ioe) {  
			System.out.println(ioe);  
		}  
		//Para testar
		for (int i = 0; i < x.length; i++){
			System.out.println(x[i]+" ");
			System.out.println();
		}

		//Para testar
		for (int i = 0; i < 63; i++){
			for (int l = 0; l < 7; l++){
				System.out.print(w[i][l]);
			}
			System.out.println();
		}
		//Calcular a resposta da rede

		for (int i = 0;i <7; i++){
			calcula(i);
		}

		private void calcula ( int i ){
			int somaTotal = 0;
			for ( int j  = 0; j < 63; j++){
				int soma = x[j]* w[j][i];
				somaTotal = somaTotal + soma;
				if (somaTotal >= 1 ){
					somaTotal = 1;
				}else if (somaTotal <= -1){
					somaTotal = -1;
				}else{
					somaTotal = 0;
				}
			}
			if (somaTotal != t[i]){
				for (int j = 0; j< 63; j++){
					w[j][i]= w[j][i] + alvo * x[j];
					calcula (i);
				}
			}
		}

	}

}

2 Respostas

pedromuyala

Olá Juliana, olha só:

import java.io.*;   
  
    public class Principal {     
   
      int []x = new int[63] ;   
      int []y = new int [7];   
      int [][] w = new int [63][7];   
      int indice = 0;   
      int  alvo = 1;   
   
      File file = new File("c:/a1.txt");   
      int [] t = {1,-1, -1, -1, -1, -1, -1};
   	  
       public Principal() {
          
         try {   
         
            FileReader reader = new FileReader(file);     
            BufferedReader input = new BufferedReader(reader);     
            String linha;     
            //Atribui -1 ao caracter . e 1 ao caracter #.   
            while ((linha = input.readLine()) != null) {     
               for (int i = 0; i<linha.length(); i++){   
                  if (linha.charAt(i)== '.'){   
                     x[indice]= -1;   
                  }
                  else if (linha.charAt(i)=='#'){   
                     x[indice] = 1;   
                  }   
                  indice = indice +1;   
               }   
               System.out.println(linha);     
            }   
            input.close();     
         } 
             catch (IOException ioe) {     
               System.out.println(ioe);     
            }     
        //Para testar   
         for (int i = 0; i < x.length; i++){   
            System.out.println(x[i]+" ");   
            System.out.println();   
         }   
      
        //Para testar   
         for (int i = 0; i < 63; i++){   
            for (int l = 0; l < 7; l++){   
               System.out.print(w[i][l]);   
            }   
            System.out.println();   
         }   
        //Calcular a resposta da rede   
      
         for (int i = 0;i <7; i++){   
            calcula(i);   
         }   
      }
   
       private void calcula ( int i ){   
         int somaTotal = 0;   
         for ( int j  = 0; j < 63; j++){   
            int soma = x[j]* w[j][i];   
            somaTotal = somaTotal + soma;   
            if (somaTotal >= 1 ){   
               somaTotal = 1;   
            }
            else if (somaTotal <= -1){   
               somaTotal = -1;   
            }
            else{   
               somaTotal = 0;   
            }   
         }   
         if (somaTotal != t[i]){   
            for (int j = 0; j< 63; j++){   
               w[j][i]= w[j][i] + alvo * x[j];   
               calcula (i);   
            }   
         }   
      }
      
       public static void main(String[] args) {     
         Principal iniciar = new Principal();
      }
   }

Criei um construtor para a classe principal e chamo o main para inicia-la separadamente!
Espero ter lhe ajudado! :smiley: Valew. :wink:

L

A assinatura do metodo calcula deve ser assim:

private static void calcula ( int i ){

ele deve ser static.

Criado 18 de outubro de 2009
Ultima resposta 19 de out. de 2009
Respostas 2
Participantes 3