| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
gjbr
Registrado: 10 Nov 2009 Mensajes: 1
| Publicado: 10/11/2009 1:31 am | | | Título: cómo devolver un arreglo desde un método |
| hola a todos, estoy confrontando un problema que no he podido solventar. Estoy intentado crear un método que devuelva un arreglo bidimensional para utilizarlo dentro del cuerpo de main. El ensayo que he estado intentando es el siguiente:
import java.util.Scanner; //carga la clase Scanner
public class ensayoI { static Scanner entrada = new Scanner(System.in); static int n;
public static void main(String args[]) { MATRIZIDENTIDAD MI = new MATRIZIDENTIDAD(); double I[][] = MI.matriz();
System.out.print("Orden de la matriz: "); n = entrada.nextInt(); // Lee un entero.
for(int fila = 1; fila <= n; ++fila) { for(int col = 1; col <= n; ++col) { System.out.printf("\t %.2f ", I[fila][col]); System.out.println(""); } } // cierre del primer ciclo for.
} // main
static class MATRIZIDENTIDAD { public double[][] matriz() { double[][] I = new double[10][10];
for(int i = 1; i <= n; i++) { for(int j = 1; j <= n; j++) { if(i == j) { I[i][j] = 1.0; } else { I[i][j] = 0.0; } } } return I; } } //MATRIZIDENTIDAD } // CLASE ENSAYO1
Lo que intento hacer es retornar a main una matriz unitaria bidimensional, para luego realizar otras operaciones. He seguido las instrucciones del libro JAVA2 de Steven Holzner, sin resultados favorables. El ciclo anidado dentro de "main" es para poder visualizar si el resultado esperado es el correcto. Me gustaría que me ayudaran a superar esta dificultad.
Saludos Gustavo |
| | Volver arriba | |  | grandzam

Registrado: 10 Feb 2005 Mensajes: 182 Ubicación: Guadalupe, Zacatecas, México
| Publicado: 05/12/2009 12:00 am | | | Título: |
| Hola tu codigo funciona bien, es solo que como estas usando una clase interna: static class MATRIZIDENTIDAD y pues n esta declarada en la clase publica ensayoI pero aun no tenía valor ya que lo toma hasta:
| Código: | n = entrada.nextInt(); // Lee un entero.
|
Y bueno hice otro cambio para que te imprima la matriz de manera correcta, también era cueston de solo moverla, jeje:
| Código: | System.out.println(""); |
Bueno enseguida te dejo aquí el programa completo, tiene comentarios de donde le movi así que revisalo bien:
| Código: | import java.util.Scanner; //carga la clase Scanner
public class ensayoI { static Scanner entrada = new Scanner(System.in); static int n;
public static void main(String args[]) { MATRIZIDENTIDAD MI = new MATRIZIDENTIDAD();
System.out.print("Orden de la matriz: "); n = entrada.nextInt(); // Lee un entero.
double I[][] = MI.matriz(); //Cambie de orden, estaba abajo de la declaración MATRIZENTIDAD MI
for(int fila = 1; fila <= n; ++fila) { for(int col = 1; col <= n; ++col) { System.out.printf("\t %.2f ", I[fila][col]); } System.out.println(""); //Movi esta línea porque en el for anterior hacía que se imprimieran todos los números hacia abajo y no en forma de matriz } // cierre del primer ciclo for.
} // main
static class MATRIZIDENTIDAD { public double[][] matriz() { double[][] I = new double[10][10];
for(int i = 1; i <= n; i++) { for(int j = 1; j <= n; j++) { if(i == j) { I[i][j] = 1.0; } else { I[i][j] = 0.0; } } } return I; } } //MATRIZIDENTIDAD } // CLASE ENSAYO1
|
e-proyect.com |
| | Volver arriba | |  | scanfernan
Registrado: 15 Ago 2005 Mensajes: 149 Ubicación: PUEBLA,PUE
| Publicado: 08/12/2009 7:20 pm | | | Título: |
| pues de entrada, el problema que tienes es que los arreglos no comienzan en 1, comienzan en 0. entonces se te salen de memoria los indices con esta forma
| Código: | for(int i = 1; i <= n; i++) { for(int j = 1; j <= n; j++) { if(i == j) { I[i][j] = 1.0; } else { I[i][j] = 0.0; } } }
|
lo correcto seria
| Código: | for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) { if(i == j) { I[i][j] = 1.0; } else { I[i][j] = 0.0; } } } |
_________________ - Si el Debuggear es el proceso de remover Bugs, entonces el programar debe ser el proceso de ponerlos. |
| | Volver arriba | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |