2013-08-25 3 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); 
    } 
    } 

Я не могу отобразить требуемую матрицу. имея проблемы в методах get и set. входное значение программы в массив, и это значение сохраняется в переменной. то эта переменная передается как аргумент установленному методу setmethod принимает значение vaalue и помещает его в массив с столбцом r row и c, все значения хранятся в массиве, а затем метод отображения вызывается в конструкторе, который использует получить метод, чтобы получить значение.нужна помощь по этому коду с помощью метода set

ответ

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

Ive пытался это так, но он показывает 0 на выходе. или большую часть времени он дает исключение arrayindexoutofbounds – user2631892

1

Ваш код имел несколько NullPointerException с, в основном потому, что вы создавали новые 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

Это workssssssssssss – user2631892

Смежные вопросы