2017-01-23 18 views
-1

我是新来的java和有一个小问题。我需要读取一组3x3 java矩阵并打印出来。没什么特别的。问题是我必须阅读它,直到我到达一个矩阵,其中包含所有元素为null并打印所有矩阵及其行列式。我有一个阅读空值的问题,并检查是否都是空值。有什么建议么? LE:这是我到目前为止的内容。但我需要,直到所有元素都为空如何在Java中读取3x3矩阵,直到所有元素都为空?

import java.io.*; 
class Matrix3x3 
{ 
    public static void main(String args[]) throws IOException 
    { 
     BufferedReader BR=new BufferedReader(new InputStreamReader (System.in)); 
     int Number[][]=new int[3][3]; 
     int i,j; 
     String m; 
     System.out.println("Enter Elements for Matrix 3x3 :"); 
     for(i=0;i<=2;i++) 
     { 
      for(j=0;j<=2;j++) 
      { 
       m=BR.readLine(); 
       if (m == null) 
        { 
         m="0"; 
        } 
       Number[i][j]=Integer.parseInt(m); 
      } 
     } 
     System.out.println("Elements in Matrix are : "); 
           System.out.println(""); 
     for(i=0;i<=2;i++) 
     { 
      for(j=0;j<=2;j++) 
      { 
       System.out.print(Number[i][j]+"\t"); 
      } 
      System.out.println(); 
     } 

     int determinantMatrix = determinant(Number, 3 ,3); 
     System.out.print("Determinant is: "determinantMatrix+"\n"); 
    } 

    public static int determinant(int[][] result, int rows, int cols) { 
    if (rows == 2) 
     return result[0][0] * result[1][1] - result[0][1] * result[1][0]; 

    int determinant1 = 0, determinant2 = 0; 
    for (int i = 0; i < rows; i++) { 
     int temp = 1, temp2 = 1; 
     for (int j = 0; j < cols; j++) { 
      temp *= result[(i + j) % cols][j]; 
      temp2 *= result[(i + j) % cols][rows - 1 - j]; 
     } 

     determinant1 += temp; 
     determinant2 += temp2; 
    } 

    return determinant1 - determinant2; 
} 
} 
+0

请更具描述性。什么是输入的来源?什么是数据结构使用?试图实现这一目标的代码是什么? –

+0

如果* all *元素为空?如果只有* some *元素为空,您将如何计算行列式? – khelwood

+0

输入源是用户输入。如果一些元素为空它们将被考虑为0我猜 –

回答

0

感谢您的编辑,我现在好多了,你的意思理解重复这个过程:“我有一个问题读取空值和检查,如果一切都是空。”

您正在检查从BufferedReader.readLine()返回的结果是否为null。这不会告诉你用户是否输入了空值,因为只有当输入流结束时(在控制台上不容易/通常不会发生)时,readLine()返回null的唯一时间。

等一下,这意味着用户输入了一个空值?你需要先决定。一种选择是你允许用户输入单词“null”。然后使用m.equals("null")进行检查。这会工作。另一种选择是关于0的用户输入为空,但如果您需要区分所有零的矩阵和所有空值的矩阵,则这是不可接受的。

接下来,你如何检查矩阵是否包含所有空值?您当前的代码已填写0代表null。所以简单的答案是你检查矩阵是否包含全零。一种想法是寻找一个非零值,如果你没有找到它,那么所有零都是零。如前所述,如果您需要区分全零矩阵和所有空值矩阵,这种方法并不好。在这种情况下,您可以例如声明您的矩阵Integer[][]而不是int[][]。这将允许您填写null值并将它们与非空值(包括零)区分开来。