eu_Nana 0 Denunciar post Postado Dezembro 15, 2011 Olá pessoal, Estou tentando realizar a soma de todos os elementos de apenas uma dimensão de uma matriz, criei um metodo para realizar tal soma, no entanto não sei oq esta acontecendo, pelo que percebi da forma que fiz parece que nem esta entrando dentro do metodo. Veja meu codigo: import java.io.DataInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; public class ReadFile { /**************************************************** * Metodo criado para receber as duas Matrizes 4D ****************************************************/ public static double[][][][] criaMatriz4D(int dim1, int dim2, int dim3, int dim4, DataInputStream input) throws IOException{ double[][][][] matriz = new double[dim1][dim2][dim3][dim4]; for (int l = 0; l < dim4; l++) { for (int k = 0; k < dim3; k++) { for (int j = 0; j < dim2; j++) { for (int i = 0; i < dim1; i++) { matriz[i][j][k][l] = input.readDouble(); } } } } return matriz; } /**************************************************** * Metodo criado para receber as duas Matrizes 3D ****************************************************/ public static float[][][] criaMatriz3D(int dim2, int dim3, int dim4, DataInputStream input) throws IOException{ float[][][] matriz = new float[dim2][dim3][dim4]; for (int k = 0; k < dim4; k++) { for (int j = 0; j < dim3; j++) { for (int i = 0; i < dim2; i++) { matriz[i][j][k] = input.readFloat(); } } } return matriz; } /****************************************************** * Metodo para realizar somatorio das matrizes de Imag ******************************************************/ public static double soma(double[][][][] mat_modImag, int dim1, int dim2, int dim3, int dim4){ System.out.println("Aqui =" ); int somatorio = 0; for(int l = 0; l < dim4; l++){ somatorio += mat_modImag[dim1][dim2][dim3][l]; System.out.println("Aqui ="); } System.out.println("a soma eh =" +somatorio); return somatorio; } public static void main(String args[]) throws IOException { // Realizando a leitura do arquivo binário DataInputStream input = new DataInputStream(new FileInputStream(new File("C:/Documents and Settings/Web/data.dtb"))); // Lendo as dimensões gravadas no binário int dim1 = 4; // dimensão fixa int dim2 = input.readInt(); // dimensão lida do arquivo binário int dim3 = input.readInt(); // dimensão lida do arquivo binário int dim4 = input.readInt(); // dimensão lida do arquivo binário // Exibo os valores de cada dimensão, só para verificar se esta "pegando" valor correto System.out.println("Dimensão1= " +dim1); System.out.println("Dimensão2= " +dim2); System.out.println("Dimensão3= " +dim3); System.out.println("Dimensão4= " +dim4); // Guardo os valores das respectivas matrizes double [][][][] mat_modImag = criaMatriz4D(4, dim2, dim3, dim4, input); double [][][][] mat_conjImag = criaMatriz4D(4, dim2, dim3, dim4, input); float [][][] mat_modScatter = criaMatriz3D(dim2, dim3, dim4, input); float [][][] mat_conjScatter = criaMatriz3D(dim2, dim3, dim4, input); // Fechando a leitura input.close(); // Imprime as posições das matrizes System.out.println(mat_modImag[0][0][16][16]); System.out.println(mat_conjImag[0][0][19][16]); System.out.println(mat_modScatter[1][2][1]); System.out.println(mat_conjScatter[14][16][3]); } // Metodo para imprimir as matrizes private static void imprimeMatriz(double[][][][] matriz) { System.out.println("----"); for (int i = 0; i < matriz.length; i++) { for (int j = 0; j < matriz[i].length; j++) { for (int k = 0; k < matriz[i] [j].length; k++) { System.out.print(" "); for (int l = 0; l < matriz[i] [j][k].length; l++) { // System.out.print(matriz[i][j][k][l] + " "); } System.out.println(); } System.out.println("--"); } System.out.println("----"); } } } Inseri uns print's dentro do metodo, porém nenhum esta sendo exibido, debuguei o código, inseri um breakpoint dentro do metodo, porém a única coisa que exibe é oq segue abaixo: <terminated>ReadFile [Java Application] <disconnected>ReadFile at localhost:2138 <terminated, exit value: 0>C:\Arquivos de programas\Java\jre6\bin \javaw.exe (09/12/2011 13:50:44) Pelo que entendi tem relação com a soma, não realizou a soma. Estou certa? No entanto não estou entendendo pq não esta realizando o calculo. OBS: Minha matriz é do seguinte tipo: DOUBLE = Array[4, 16, 32, 32], ou seja, possui 4Dimensões, preciso somar os elementos da dimensão4 por exemplo. Obrigada, Compartilhar este post Link para o post Compartilhar em outros sites
sekkuar 0 Denunciar post Postado Janeiro 9, 2012 Eu acho que não faz sentido usar dim4 como limitador no for, se você usa dim1, dim2, dim3 e soma todos os valores dessa matriz (lembre-se que em java não existe matriz multidimensional, apenas matrizes de matrizes), então o limitador deveria ser o length da ultima matriz. for(int l = 0; l < mat_modImag[dim1][dim2][dim3].length; l++){ somatorio += mat_modImag[dim1][dim2][dim3][l]; System.out.println("Aqui ="); } Compartilhar este post Link para o post Compartilhar em outros sites