私はクラス配列とクラス行列を記述するための割り当てを与えられました。行列クラスは配列を作成するために配列クラスを使用します。それは他の配列を指す配列のようです。すべてうまくいったが、私が作成した2つのマトリックスを追加しようとすると、NullPointerExceptionが発生し続ける。これが私のコード全体である。私は下のコードで私のエラーを指摘している。配列を使って行列を作成する
import java.util.Scanner;
public class Matrix {
public Vector mat[];
public static int m;
static int i, j;
Scanner sc;
Matrix() {
m = 0;
mat = null;
}
Matrice(int m, int n) {
Matrix.m = m;
Vector.n = n;
mat = new Vector[100];
// mat[i]=new Vector(100);
}
public void fillmatrix() {
mat = new Vector[100];
sc = new Scanner(System.in);
System.out.println("enter the number of the rows");
Matrix.m = sc.nextInt();
System.out.println("enter the number of your columns");
Vector.n = sc.nextInt();
for (j = 0; j < m; j++) {
mat[j] = new Vector(Vector.n);
mat[j].fillmatrix();
}
}
public void DisplayMatrix() {
System.out.println("Th matrix you have entered: ");
for (i = 0; i < Vector.n; i++) {
mat[i].Display();
}
public static Matrix Addition(Matrix mat1, Matrix mat2) {
Matrix mat3 = new Matrix();
for (j = 0; j < Vector.n; j++) {
for (i = 0; i < Matrix.m; i++) {
mat3.mat[i].t[j] = (mat1.mat[i].t[j]) + (mat2.mat[i].t[j]); < -- -- -- -- - where the mistake but i can 't solve it ://>
}
}
return mat3;
}
}
public static void main(String args[]) {
Matrix Mat1 = new Matrix();
Matrix Mat2 = new Matrix();
Matrix Mat3 = new Matrix();
Mat1.fill();
Mat1.affiche2();
Mat2.fill();
Mat2.affiche2();
Mat3 = Matrix.Addition(Mat1, Mat2);
Mat3.affiche2();
}
import java.util.Scanner;
public class Vector {
public static int n;
static int i;
static int j, k;
int t[];
static Scanner sc = new Scanner(System.in);
Vector(int n) {
Vector.n = n;
t = new int[100];
}
Vector() {
Vector.n = 0;
t = null;
}
public void fill() {
t = new int[100];
sc = new Scanner(System.in);
for (i = 0; i < n; i++) {
System.out.println("enter " + i + "° element of your array");
t[i] = sc.nextInt();
}
}
public void contain(Vector Tab) {
i = 0;
j = 0;
if (n <= Tab.t.length) {
while (j < Tab.t.length) {
if (t[i] != Tab.t[j]) {
j++;
i = 0;
} else {
i++;
j++;
}
}
if (i > n) {
System.out.println("the array 1 is contained in array 2");
}
els
System.out.println("the array 1is not contained in array2");
}
} else {
while (i < n) {
if (t[i] != Tab.t[j]) {
i++;
j = 0;
} else {
i++;
j++;
}
}
if (j > n) {
System.out.println("the array 2 is contained in array 1");
} else {
System.out.println("the array 2 is contained in array 1");
}
}
}
boolean appartient(int x) {
i = 0;
boolean found = false;
while ((i < n) && (t[i] != x)) {
i++;
}
if (i >= n)
System.out.println("le x n'appartient pas a votre Tableau");
else {
System.out.println("le x appartient a votre tableau");
found = true;
}
return found;
}
public void Display() {
for (i = 0; i < n; i++) {
System.out.println(t[i]);
}
}
public void Order() {
int j, tmp;
for (i = 0; i < n; i++) {
for (j = i + 1; j < n; j++) {
if (t[i] > t[j]) {
tmp = t[i];
t[i] = t[j];
t[j] = tmp;
}
}
}
for (int i = 0; i < n; i++) {
System.out.println("your array ordered " + t[i]);
}
}
void inser(int x) {
if (appartient(x) == true) {
System.out.println("Insersion is impossible, the value already exist");
} else {
for (i = n;
(i > 0) && (t[i - 1] > x); i--)
t[i] = t[i - 1];
t[i] = x;
n++;
for (i = 0; i < n; i++)
System.out.println(t[i]);
}
}
public static void fusionner(Vector tab1, Vector tab2) {
Vector FUS = new Vector(tab1.t.length + tab2.t.length);
i = 0;
j = 0;
k = 0;
while ((i < tab1.t.length) && (j < tab2.t.length))
if (tab1.t[i] < tab2.t[j]) {
FUS.t[k] = tab1.t[i];
k++;
i++;
} else {
FUS.t[k] = tab2.t[j];
k++;
j++;
}
while (i < n) {
FUS.t[k] = tab1.t[i];
k++;
i++;
}
while (j < n) {
FUS.t[k] = tab2.t[j];
k++;
j++;
}
System.out.println("your arrays after the fusion is ");
for (k = 0; k < tab1.t.length + tab2.t.length; k++)
System.out.println(FUS.t[k]);
}
public static void main(String args[]) {
Vector tab1 = new Vector();
System.out.println("Enter n");
n = sc.nextInt();
tab1.fill();
tab1.Display();
tab1.trier();
Vector tab2 = new Vector();
tab2.fill();
tab2.affiche();
tab2.trier();
fusionner(tab1, tab2);
tab1.contain(tab2);
tab2.appartient(5);
tab1.inser(6);
}
}
おかげで、私はあなたのアドバイスに基づいて、私のコードにいくつかの変更を加え、そして2つの行列の追加をやり続けるいますmat3.mat [i] .t [j] =(mat1.mat [i] .t [j])+(mat2.mat [i] .t [j])このようにして、 ;私はまだNullpointerの問題、任意のアドバイス、ありがとうございます。 –
@HananeEvancho 'Matrix Addition'は有効な関数名(スペース)ではありません。この関数は** DisplayMatrix'の中に書かれています。 Javaでは、このようなネスト機能は使用できません。 –
私は今働いてくれてありがとう:) –