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);
}
}
我无法显示所需的矩阵。在get和set方法中遇到问题。程序输入值到数组中,该值存储在变量中。然后将该变量作为参数传递给set方法,setmethod获取vaalue并将其放入具有r row和c列的数组中,所有值都存储在数组中,然后在构造函数中调用display方法,该构造函数使用get方法来获取值。
答案 0 :(得分:2)
无需在get,set和display方法中再次创建数组。 您正在不必要地创建大量对象。我已将您的代码更改为正常工作 请使用此代码
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);
}
}
答案 1 :(得分:1)
您的代码有几个NullPointerException
,主要是因为您使用空构造函数创建新的Matrix
对象,然后尝试从那里设置矩阵的属性,这意味着内部没有创建矩阵你的空构造函数,从而使它指向null。
试试这个(我在这里也使用了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";
}
}`