739.845 temas | 5.168.045 mensajes | seremos forros, pero somos una bocha
Viejo gustavo_nqn05 dijo: 18.04.08
Tengo que hacer un ejercicio que permita cargar una matriz y mostrarla (en modulos distintos), mi pregunta es: donde declaro la matriz, en el main o en cada modulo? es private o public?

public static void main (String [] args)
{
int [][] datos = new int [n][n];

ó

public void CargarMatriz()
{
int [][] datos=new int [][];
int f,c;
for(f=0; f<datos.length; f++)
for(c=0;c<datos.length;c++)
{
System.out.println("Ingrese un nº entero");
datos[f][c]=TecladoIn.readLineInt();
}
}

public void Mostrar()
{
int f,c;
for(f=0; f<datos.length; f++)
for(c=0;c<datos.length;c++)
{
System.out.print(datos[f][c]+" ");
System.out.print("\n");
}
}


parece una pavada pero es una duda existencial que tengo...

11 Comentarios | Registrate y participá

Viejo arielj dijo: 18.04.08
En ningún método, la declarás afuera de los métodos, como atributo de la clase para que exista aunque no se llame a ningún método.

O sea, en java, todos son clases, y una clase tiene atributos (ahí entraría la matriz y las demás "variables globales" de tu programa) y métodos (el main, cargarMatriz y mostrar).

Lo que harías es, en el método cargarMatriz, darle dimensiones y meterle los datos.
Viejo Ale-uy dijo: 18.04.08
Tambien la podes declarar en el main y despues la envias por parametro a los otros metodos.
Viejo arielj dijo: 18.04.08
Lo bueno de declararlo afuera del main es que si después tiene otra clase que use esta que hizo ahora, puede pedirle la matriz a esta porque sería un atributo, si está en el main no habría forma de tenerla desde afuera.


Otra cosa, los atributos en java, por seguridad, conviene hacerlos siempre privados y hacer un "getter" y "setter" públicos (getMatriz()) para obtener ese atributo.

Igual eso depende de vos, podés hacerlo público si no te jode que toqueteen los valores desde afuera :P.
Viejo Ale-uy dijo: 18.04.08
Si pero ahi te olvidas de la encapsulacion, la matriz tendria que ser private y usar un metodo getMatriz(), pero creo que es mas de lo que necestia claramente esto no esta orientado a objetos.
Viejo gustavo_nqn05 dijo: 20.04.08
la estoy pifiando feo, porque no puedo llamar a otra clase, tiene que ser todo dentro de la misma:
este es el enunciado:

* Leer un valor n para dimensionar una matriz (n x n), y ofrecer un menú para
realizar las siguientes acciones, repetidamente hasta que el usuario desee salir:
1 - Cargar una matriz de tamaño n x n
2 - Mostrar la matriz cargada
3 - Llenar un arreglo de longitud n, de manera que el elemento v[i] sea
el mínimo elemento de la fila i de la matriz
4 - Ordenar el arreglo (algoritmo de selección visto en teoría)
5 - Mostrar el arreglo
6 - Salir del programa

esto es lo que llevo:

Spoiler


pd 1: la matriz me pedia ser inicializada
pd 2: no se si tengo que usar el switch ya que me deja hacer una sola opcion, y yo necesito varias...


estoy hasta las manos
Viejo arielj dijo: 20.04.08
Para que se vuelva a repetir el menú hace un "while (op!=6)" y encerrá las cosas.

Lo de inicializarla, cuando el usuario diga el n de la matriz podés, después de crearla, llamar a un método "void inicializar(matriz)" que ponga todos ceros.

Una cosa que no entiendo es por qué hacés esto "= {{0,0},{0,0},{0,0}};" cuando ponés arriba la matriz. Porque estás creando una matriz de 2x3 con todos 0's creo, pero después la cambiás por otra. Te conviene hacer como con "arreglo" que pusiste la variable sola.
Viejo cipoleto dijo: 21.04.08
Yo tambien tengo que entregar el trabajo este (es para mañana) mi problema es que no habia leido que se hacia con metodos por eso estoy hasta las manos ahora. Mi pregunta es como hago para mostrar la matriz a traves de un metodo????
saludos
Viejo arielj dijo: 21.04.08
Originalmente publicado por cipoleto Ver mensaje
Yo tambien tengo que entregar el trabajo este (es para mañana) mi problema es que no habia leido que se hacia con metodos por eso estoy hasta las manos ahora. Mi pregunta es como hago para mostrar la matriz a traves de un metodo????
saludos
La idea es lo que puso arriba gustavo. Recorrés cada posición y la imprimís en pantalla con el "System.out.print()" y cuando llegás al final de la fila bajás de renglón con un "System.out.print("\n")".

La otra opción es que vas recorriendo cada posición y vas guardando en un string cada caracter o lo que leas y hacés "cadena=+matriz[f][c]" (creo que con strings se pueden sumar, si no podés llamar al método contactenar). Cuando tenés una fila entera en un string hacés "System.out.println(cadena)"
Viejo isbra dijo: 27.04.08
Hola yo también estudio programación , me gustaría saber que programa utilizas tú para programar, yo instale dos programas de programación pero no soy capaz de compilarlos, si tú me pudieras ayudar me sería de gran ayuda. Mi correo es brais5077@yahoo.es . Necesito la ayuda URGENTEMENTE.

Herramientas
Iniciar Sesion

Recordarme

Top de Usuarios