如何设置矩阵的尺寸大小,然后从其他方法为该矩阵赋值?

时间:2016-10-13 21:58:11

标签: java matrix

我有这个代码实际上有效!但是它不是例外安全(如果我写任何字符,会崩溃),所以我试图让它变得更好。

正如你在那里的代码中看到的那样,我正在初始化变量fila和columna,询问有多少行(filas)和列(columnas)将要有矩阵,接下来,我使用the初始化矩阵前两个变量。

通过使用这种方法,我不能使用Try& Catch,但我不知道如何用用户输入初始化矩阵,并能够在我的其他方法中使用这些变量。

工作代码

import javax.swing.JOptionPane;

public class test {

int i = 0;
int j = 0;
int fila = Integer.parseInt(JOptionPane.showInputDialog(null, "Cuántas filas?", "Iniciando", JOptionPane.QUESTION_MESSAGE));
int columna = Integer.parseInt(JOptionPane.showInputDialog(null, "Cuántas columnas?", "Iniciando", JOptionPane.QUESTION_MESSAGE));
int [][] matrix = new int[fila][columna];
int valorCentral = columna/2;
int valorDiagonal = 0;
boolean error = false;
StringBuffer elementos = new StringBuffer();
StringBuffer elementosNullificados = new StringBuffer();
StringBuffer elementosEsquineros = new StringBuffer();
StringBuffer elementoUnoCentrado = new StringBuffer();
StringBuffer elementoUnoEnDiagonal = new StringBuffer();

public static void main(String[] args) {
    test test = new test();
    test.pideDatos();;
    test.llenado();
    test.nullificador();
}

public void pideDatos(){

}

public void llenado()
    {
           for (int i = 0; i < fila; i++)  // Llenado de la matriz
           {         
               for (int j = 0; j < columna; j++)
               {    
                 matrix[i][j] = Integer.parseInt(JOptionPane.showInputDialog(null, "Fila [" + (i+1) + "]:  Columna [" + (j+1) + "]", "Iniciando", JOptionPane.QUESTION_MESSAGE));
                 elementos.append("["+matrix[i][j]+"] ");  // Agrega cada fila de la matriz a value.
                   if(j == columna-1) // Cuando se llegue a la última columna se le agrega un \n
                   {
                       elementos.append("\n                 ");
                   }               
               }
            }

           elementos.toString(); // Convierte a String los elementos en value
           JOptionPane.showMessageDialog(null, "Elementos de la matriz "+fila+"x"+columna+":\n\n                 "+elementos, "Elementos", JOptionPane.INFORMATION_MESSAGE, null);

    }

    public void nullificador(){

        for (int i = 0; i < fila; i++)  // Llenado de la matriz
           {         
               for (int j = 0; j < columna; j++)
               {
                 matrix[i][j] = 0;
                 elementosNullificados.append("["+matrix[i][j]+"] ");  // Agrega cada fila de la matriz a value.
                   if(j == columna-1) // Cuando se llegue a la última columna se le agrega un \n
                   {
                       elementosNullificados.append("\n                   ");
                   }               
               }
            }
            elementosNullificados.toString(); // Convierte a String los elementos en value
           JOptionPane.showMessageDialog(null, "Elementos nullificados de la matriz "+fila+"x"+columna+":\n\n                   "+elementosNullificados, "Elementos", JOptionPane.INFORMATION_MESSAGE, null);


    }

到目前为止,我尝试过在方法中使用矩阵,但是如何在其他方法中使用这些变量呢?

import javax.swing.JOptionPane;

public class test {

int i = 0;
int j = 0;

boolean error = false;
StringBuffer elementos = new StringBuffer();
StringBuffer elementosNullificados = new StringBuffer();
StringBuffer elementosEsquineros = new StringBuffer();
StringBuffer elementoUnoCentrado = new StringBuffer();
StringBuffer elementoUnoEnDiagonal = new StringBuffer();

public static void main(String[] args) {
    test test = new test();
    test.pideDatos();;
    test.llenado();
    test.nullificador();
}

public void pideDatos(){

    int fila = Integer.parseInt(JOptionPane.showInputDialog(null, "Cuántas filas?", "Iniciando", JOptionPane.QUESTION_MESSAGE));
    int columna = Integer.parseInt(JOptionPane.showInputDialog(null, "Cuántas columnas?", "Iniciando", JOptionPane.QUESTION_MESSAGE));
    int [][] matrix = new int[fila][columna];
    int valorCentral = columna/2;
    int valorDiagonal = 0;
}

public void llenado()
    {
           for (int i = 0; i < fila; i++)  // Llenado de la matriz
           {         
               for (int j = 0; j < columna; j++)
               {    
                 matrix[i][j] = Integer.parseInt(JOptionPane.showInputDialog(null, "Fila [" + (i+1) + "]:  Columna [" + (j+1) + "]", "Iniciando", JOptionPane.QUESTION_MESSAGE));
                 elementos.append("["+matrix[i][j]+"] ");  // Agrega cada fila de la matriz a value.
                   if(j == columna-1) // Cuando se llegue a la última columna se le agrega un \n
                   {
                       elementos.append("\n                 ");
                   }               
               }
            }

           elementos.toString(); // Convierte a String los elementos en value
           JOptionPane.showMessageDialog(null, "Elementos de la matriz "+fila+"x"+columna+":\n\n                 "+elementos, "Elementos", JOptionPane.INFORMATION_MESSAGE, null);

    }
public void nullificador(){

    for (int i = 0; i < fila; i++)  // Llenado de la matriz
       {         
           for (int j = 0; j < columna; j++)
           {
             matrix[i][j] = 0;
             elementosNullificados.append("["+matrix[i][j]+"] ");  // Agrega cada fila de la matriz a value.
               if(j == columna-1) // Cuando se llegue a la última columna se le agrega un \n
               {
                   elementosNullificados.append("\n                   ");
               }               
           }
        }
        elementosNullificados.toString(); // Convierte a String los elementos en value
       JOptionPane.showMessageDialog(null, "Elementos nullificados de la matriz "+fila+"x"+columna+":\n\n                   "+elementosNullificados, "Elementos", JOptionPane.INFORMATION_MESSAGE, null);


}

1 个答案:

答案 0 :(得分:1)

您可以定义一个空数组,然后在稍后的函数中初始化它,这将允许其他方法获取初始化它的方法之外的信息。

public class test {
{
  private int[][] matrix;

  public void pideDatos() {
    int fila = Integer.parseInt(JOptionPane.showInputDialog(null, "Cuántas filas?", "Iniciando", JOptionPane.QUESTION_MESSAGE));
    int columna = Integer.parseInt(JOptionPane.showInputDialog(null, "Cuántas columnas?", "Iniciando", JOptionPane.QUESTION_MESSAGE));
    matrix = new int[fila][columna];
  }
}

给那个破解