乘以 2 矩阵时的打印问题
Issues with printing when multiplying 2 matrix
我试图对两个矩阵进行求和、减法和乘法运算,求和和减法工作正常,但是在进行乘法时,打印结果为 0。抱歉,西班牙语变量,我必须用西班牙语交付我的学校作业。
package Segundo_Parcial;
import java.util.Scanner;
public class matriz {
private Scanner teclado;
private int[][] matriz1;
private int[][] matriz2;
private int[][] suma;
private int[][] resta;
private int[][] multi;
private float[][] divi;
public void Datos() {
teclado = new Scanner(System.in);
matriz1 = new int[5][5];
matriz2 = new int[5][5];
suma = new int[5][5];
resta = new int[5][5];
multi = new int[5][5];
divi = new float[5][5];
System.out.println(" [ Matriz 1 ] ");
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.println("Ingresa los numeros en la posicion [" + i + "][" + j + "] :");
matriz1[i][j] = teclado.nextInt();
}
}
System.out.println(" [ Matriz 2 ] ");
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.println("Ingresa los numeros en la posicion [" + i + "][" + j + "] :");
matriz2[i][j] = teclado.nextInt();
}
}
}
public void sumaYresta() {
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
suma[i][j] = matriz1[i][j] + matriz2[i][j];
}
}
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
resta[i][j] = matriz1[i][j] - matriz2[i][j];
}
}
}
public void Multiplicacion(){
int x=0, jd=0, id=0,i=0,j=0, resul=0;
for(i=0;i<5;){
for(j=0;j<5;){
for(jd=0;jd<5;jd++){
resul = matriz1[i][jd] * matriz2[jd][j];
resul+=resul;
if(jd==4){
for(int c=0;c<5;c++){
for(int c2=0;c2<5;c2++){
multi[c][c2]= resul;
resul=0;
}
}
j++;
if(j==4){
i++;
}
}
}
}
}
}
public void Imprimir() {
System.out.println(" [ RESULDATO DE LA SUMA ] ");
for (int c = 0; c < 5; c++) {
for (int c2 = 0; c2 < 5; c2++) {
System.out.print("[" + multi[c][c2] + "]");
}
System.out.println("");
}
//
// System.out.println(" [ RESULDATO DE LA RESTA ] ");
// for (int i = 0; i < 5; i++) {
// for (int j = 0; j < 5; j++) {
// System.out.print("[" + resta[i][j] + "]");
// }
// System.out.println("");
//
// }
}
public static void main(String[] args) {
matriz matri = new matriz();
matri.Datos();
matri.sumaYresta();
matri.Imprimir();
}
}
它应该打印相应的结果,但它却打印了“0”
我不确定我的代码的哪一部分失败了。有人有想法吗?
谢谢:)
我猜你想在 "Multiplication" 内进行乘法运算,所以我将其更改为:
public void multiplication(){
for (int cm = 0; cm < 5; cm++) {
for (int cn = 0; cn < 5; cn++) {
int result = 0;
for (int i = 0; i < 5; i++) {
result += this.matriz1[cm][i] * this.matriz2[i][cn];
}
this.multi[cm][cn] = result;
}
}
}
您还必须在 main 方法中调用它,因此在打印结果之前添加:
matri.multiplicacion();
当你说它适用于学校时,我建议你看看你的代码风格,比如命名约定和最重要的英文变量名和注释。 (除非你的老师另有说明,否则请忽略我刚刚说的话:)
它使您的代码更加专业。
解决方案也非常具体,您可能会为可变矩阵大小做一些不同的事情。
我试图对两个矩阵进行求和、减法和乘法运算,求和和减法工作正常,但是在进行乘法时,打印结果为 0。抱歉,西班牙语变量,我必须用西班牙语交付我的学校作业。
package Segundo_Parcial;
import java.util.Scanner;
public class matriz {
private Scanner teclado;
private int[][] matriz1;
private int[][] matriz2;
private int[][] suma;
private int[][] resta;
private int[][] multi;
private float[][] divi;
public void Datos() {
teclado = new Scanner(System.in);
matriz1 = new int[5][5];
matriz2 = new int[5][5];
suma = new int[5][5];
resta = new int[5][5];
multi = new int[5][5];
divi = new float[5][5];
System.out.println(" [ Matriz 1 ] ");
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.println("Ingresa los numeros en la posicion [" + i + "][" + j + "] :");
matriz1[i][j] = teclado.nextInt();
}
}
System.out.println(" [ Matriz 2 ] ");
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out.println("Ingresa los numeros en la posicion [" + i + "][" + j + "] :");
matriz2[i][j] = teclado.nextInt();
}
}
}
public void sumaYresta() {
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
suma[i][j] = matriz1[i][j] + matriz2[i][j];
}
}
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
resta[i][j] = matriz1[i][j] - matriz2[i][j];
}
}
}
public void Multiplicacion(){
int x=0, jd=0, id=0,i=0,j=0, resul=0;
for(i=0;i<5;){
for(j=0;j<5;){
for(jd=0;jd<5;jd++){
resul = matriz1[i][jd] * matriz2[jd][j];
resul+=resul;
if(jd==4){
for(int c=0;c<5;c++){
for(int c2=0;c2<5;c2++){
multi[c][c2]= resul;
resul=0;
}
}
j++;
if(j==4){
i++;
}
}
}
}
}
}
public void Imprimir() {
System.out.println(" [ RESULDATO DE LA SUMA ] ");
for (int c = 0; c < 5; c++) {
for (int c2 = 0; c2 < 5; c2++) {
System.out.print("[" + multi[c][c2] + "]");
}
System.out.println("");
}
//
// System.out.println(" [ RESULDATO DE LA RESTA ] ");
// for (int i = 0; i < 5; i++) {
// for (int j = 0; j < 5; j++) {
// System.out.print("[" + resta[i][j] + "]");
// }
// System.out.println("");
//
// }
}
public static void main(String[] args) {
matriz matri = new matriz();
matri.Datos();
matri.sumaYresta();
matri.Imprimir();
}
}
它应该打印相应的结果,但它却打印了“0” 我不确定我的代码的哪一部分失败了。有人有想法吗? 谢谢:)
我猜你想在 "Multiplication" 内进行乘法运算,所以我将其更改为:
public void multiplication(){
for (int cm = 0; cm < 5; cm++) {
for (int cn = 0; cn < 5; cn++) {
int result = 0;
for (int i = 0; i < 5; i++) {
result += this.matriz1[cm][i] * this.matriz2[i][cn];
}
this.multi[cm][cn] = result;
}
}
}
您还必须在 main 方法中调用它,因此在打印结果之前添加:
matri.multiplicacion();
当你说它适用于学校时,我建议你看看你的代码风格,比如命名约定和最重要的英文变量名和注释。 (除非你的老师另有说明,否则请忽略我刚刚说的话:)
它使您的代码更加专业。
解决方案也非常具体,您可能会为可变矩阵大小做一些不同的事情。