problemas con parametros!

Iniciado por jazz07, 14 Diciembre 2015, 00:06 AM

0 Miembros y 1 Visitante están viendo este tema.

jazz07

buenos días a todos, miren tengo una clase que consta de 3 métodos el primero lee de un archivo y pasa lo que lee a una matriz y retorna esta, el segundo se encarga de girar esa matriz , y el tercero escribe la matriz en otro archivo. bueno el problema es que nose como pasar la matriz girada al método que imprime en el archivo. osea lo que quiero hacer es leer del archivo la matriz luego esa matriz que lei girarla y final mente volver a escribirla en otro archivo osea que tengo problemas para pasar la matriz girada al método que imprime , les dejo lo que tengo

public class LeerArchivo  {
   
   public String [][] matriz() {
       
       
       String matriz[][] = new String[3][3];
       //String matrizNew[][] = new String [r][t];
       
       File archivo = null;
       FileReader Fr = null;
       BufferedReader br = null;
       try {
           archivo = new File("archivo1.txt");
           Fr = new FileReader(archivo.toString());
           br = new BufferedReader(Fr);
           String linea;
           String delimiter = " ";
           //String matriz[][] = new String[3][3];
           //Cuenta las líneas y a la vez sería el número de filas
           int numlinea=0;
           //String matriz[][] = new String[3][3];
           //validación si existe línea
           while (((linea = br.readLine()) != null)) {
               
               String a[]=linea.split(delimiter);
              //Bucle para poder ingresar todas las columnas del Array "a" que existan. TODAS.
               for (int l = 0; l < a.length; l++) {
                   //ingresamos los datos de cada columna de "a" a la matriz.
                   //"numlinea" hace de fila, "l" es el numero de la columna.
                   matriz[numlinea][l] = a[l];
                   //Prueba de que los datos están llenando la fila de la matriz.
                   //System.out.print(matriz[numlinea][l]+" ");  
               }
               numlinea++;
             
           }
       }catch (IOException e) {
           System.out.println(e);
       }
       
       return matriz;
   
   }
   
   
   public void imprime(String [][]matriz){ // momentaneo solo para ver como queda la matriz por pantalla
   
       //System.out.println("MATRIZ\n");
              for (int filas = 0; filas < matriz.length; filas++) {
                   for (int colum = 0; colum < matriz[filas].length; colum++) {
                       //Imprime las columnas de cada fila
                       System.out.print(matriz[filas][colum]+" ");
                   }
                   //Imprime uns alto de línea para cada fila
                   System.out.println();  
               }
       
   }
   
   public void EscribeArchivo(String nombre, String [][] matriz){
   
       File f;
      FileWriter w;
      BufferedWriter bw;
      PrintWriter wr;
      try{
         
          f= new File(nombre);
          w= new FileWriter(f);
          bw= new BufferedWriter(w);
          wr= new PrintWriter(bw);
         
           for (int filas = 0; filas < matriz.length; filas++) {
                   
                   for (int colum = 0; colum < matriz[filas].length; colum++) {
                       //Imprime las columnas de cada fila
                       wr.write(matriz[filas][colum]+" ");
                   }
                   wr.println("");
                     
               }
          wr.close();
          bw.close();
      }catch(Exception e){
     
          JOptionPane.showMessageDialog(null,"ha ocurrido un error"+ e);
      }
   }
   
   
   public String [][] GirarIzquerdaa(String [][] matriz){
       String a;
       int r=3,t=3,s=3,w=3;
       String matrizNew[][] = new String [r][t];
       String matrizNeww[][] = new String [r][t];
       for (int filas = 3-1; filas >=0/* matriz.length*/; filas--) {
                   for (int colum = 0; colum < 3/*matriz[filas].length*/; colum++) {
                       matrizNew[0][colum]= matriz[colum][filas];
                       EscribeArchivo("victo.txt",matriz);
                       System.out.print(matriz[filas][colum]+" ");
                       
                             
                   }
                   //Imprime uns alto de línea para cada fila
                   System.out.println();
               }
     
       return matriz;
   }


y este es el principa donde debo llamar todo

package beta2;

/**
*
* @author USuario
*/
public class Beta2 {

   /**
    * @param args the command line arguments
    */
   public static void main(String[] args) {
       
       LeerArchivo F = new LeerArchivo();
       F.imprime(F.matriz());
       //F.GirarIzquerdaa(F.EscribeArchivo("ertyuio.txt",));
       F.GirarIzquerdaa(F.matriz());
       F.EscribeArchivo("oop.txt",matriz);
       
       
       
   }
   
}


ojala puedan ayudarme!!!

DarK_FirefoX

Pues, primero que todo te voy a comentar que tienes un diseño de clases extremadamente malo desde mi punto de vista! No se si será una cosa obligatoria de la orden de un ejercicio, pero a mi entender está mal diseñada.

Lo que yo haría sería tener una clase que leyera el archivo y luego se lo pasaras a otra clase que al crearla le pases el archivo leido (el File) y se encarge de crear la matriz, y la misma la tiene a ella como un campo o propiedad.

Luego los métodos de rotar la matriz e imprimirla los hiciera static en una clase static que se dedique a la manipulación de matrices.

Por último crearía una clase static con un método que sirva para escribir la matriz en un nuevo archivo.

El flujo de código quedaría algo así:

Código (java) [Seleccionar]
public static void main(String[] args) {
  //Creas el lector y le pasas la ruta al archivo que contiene la matriz que vas a leer
  LectorDeArchivos r = new LectorDeArchivos("rutaAlArchivoConLaMatriz.txt");

  //Creas una instancia de la clase matriz pasandole el archivo
  //r.Archivo es el File que leimos
  Matriz m = new Matriz(rArchivo);

  //Llamamos al metodo estático GirarMatriz de la clase estática ManipulacionMatriz
  //Nota: De esta forma trabajamos sobre la matriz leída y la modificamos
  ManipulacionMatriz.GirarIzquierda(m);

  //Escritor de archivos puede ser una clase estatica con un metodo Escribe(string ruta, Matriz m)
  EscritorDeArchivos.Escribe("rutaDelNuevoArchivo.txt", m);
}


Espero esto te ayude a entender.

Salu2s