2013-08-25 70 views
0
import java.util.Scanner; 
    public class Matrix{ 
    private int rowNumber; 
private int colNumber; 
private int val; 
int [][] matrix; 

public Matrix(){ 
    rowNumber = 0; 
    colNumber = 0; 
} 

public Matrix(int row, int col){ 
    rowNumber = row; 
    colNumber = col; 
    Matrix obj = new Matrix(); 
    matrix = new int [rowNumber][colNumber]; 

    Scanner input = new Scanner(System.in); 
    for (int i = 0; i < rowNumber; i++) { 
     for (int j = 0; j < colNumber; j++) { 
      System.out.println("Enter A" + (i+1) +""+ (j+1) + " : "); 
      matrix [i][j] = input.nextInt(); 
      int val = matrix[i][j]; 
      obj.setElement(rowNumber,colNumber,val); 
     }    
    } 
    obj.display(); 
} 

public void setElement(int r, int c, int value){ 
    matrix = new int [rowNumber][colNumber]; 
    matrix[r][c] = value; 
} 

public int getElement(int r, int c){ 
    matrix = new int [rowNumber][colNumber]; 
    return matrix[r][c]; 
} 



    public void display(){ 
Matrix ex = new Matrix(); 
String str = "|\t"; 
for(int i=0; i<rowNumber; i++){ 
    for(int j=0; j<colNumber ;j++){ 
     **str += ex.getElement(i,j) + "\t";** 
     } 
System.out.println(str + "|"); 
str = "|\t"; 
} 
    } 

    public static void main (String[] args) { 
int rowNumber; 
int colNumber; 
Scanner input = new Scanner(System.in); 

System.out.println("Enter number of rows: "); 
rowNumber = input.nextInt(); 
System.out.println ("Enter number of columns: "); 
colNumber = input.nextInt(); 
Matrix obj1 = new Matrix(rowNumber,colNumber); 
    } 
    } 

我无法显示所需的矩阵。在获取和设置方法中遇到问题。将程序输入值写入数组中,并将该值存储在变量中。那么该变量作为参数传递给set方法setmethod接受vaalue并将其放入具有r row和c column的数组中,所有值都存储在一个数组中,然后在构造函数中调用显示方法,该构造函数使用得到方法来获得价值。在此代码中需要获取设置方法的帮助

回答

2

不需要在get和set和display方法中再次创建数组。 您正在创建大量的对象unnecessarily.I已经改变了你的代码才能正常工作
请使用此代码

import java.util.Scanner; 

class Matrix { 

    private int rowNumber; 
    private int colNumber; 
    int[][] matrix; 

    public Matrix() { 
     rowNumber = 0; 
     colNumber = 0; 
    } 

    public Matrix(int row, int col) { 
     rowNumber = row; 
     colNumber = col; 
     matrix = new int[rowNumber][colNumber]; 

     Scanner input = new Scanner(System.in); 
     for (int i = 0; i < rowNumber; i++) { 
      for (int j = 0; j < colNumber; j++) { 
       System.out.println("Enter A" + (i + 1) + "" + (j + 1) + " : "); 
       setElement(i, j, input.nextInt()); 
      } 
     } 
     display(); 
    } 

    public void setElement(int r, int c, int value) { 
     matrix[r][c] = value; 
    } 

    public int getElement(int r, int c) { 
     return matrix[r][c]; 
     } 

    public void display() { 

     String str = "|\t"; 
     for (int i = 0; i < rowNumber; i++) { 
      for (int j = 0; j < colNumber; j++) { 
        str += getElement(i, j) + "\t"; 
      } 
      System.out.println(str + "|"); 
      str = "|\t"; 
     } 
    } 

    public static void main(String[] args) { 
     int rowNumber; 
     int colNumber; 
     Scanner input = new Scanner(System.in); 

     System.out.println("Enter number of rows: "); 
     rowNumber = input.nextInt(); 
     System.out.println("Enter number of columns: "); 
     colNumber = input.nextInt(); 
     Matrix obj1 = new Matrix(rowNumber, colNumber); 
    } 
} 
+0

我用尽这很好,但它在输出显示为0。或者大部分时间它给了arrayindexoutofbounds异常 – user2631892

1

你的代码有几个NullPointerException S,基本上是因为你正在使用一个空的构造函数创建新Matrix对象和然后尝试从那里设置矩阵的属性,这意味着您的空构造函数内没有创建矩阵,从而导致它指向空。

试试这个(我也用Prabhaker的答案在这里):

public Matrix(int row, int col){ 
    rowNumber = row; 
    colNumber = col; 
    matrix = new int[rowNumber][colNumber]; 

    Scanner input = new Scanner(System.in); 
    for (int i = 0; i < rowNumber; i++) { 
     for (int j = 0; j < colNumber; j++) { 
      System.out.println("Enter A" + (i + 1) + "" + (j + 1) + " : "); 
      matrix[i][j] = input.nextInt(); 
      int val = matrix[i][j]; 
      setElement(rowNumber - 1, colNumber - 1, val); 
     } 
    } 
    display(); 
} 

public void setElement(int r, int c, int value) { 
    matrix[r][c] = value; 
} 

public int getElement(int r, int c) { 
    return matrix[r][c]; 
} 

public void display() { 
    String str = "|\t"; 
    for (int i = 0; i < rowNumber; i++) { 
     for (int j = 0; j < colNumber; j++) { 
      str += getElement(i, j) + "\t"; 
     } 
     System.out.println(str + "|"); 
     str = "|\t"; 
    } 
}` 
+0

It workssssssssssss – user2631892