Java 与2矩阵相乘时的打印问题
我试着对两个矩阵求和、减法和乘法,求和和和减法运算正确,但在进行乘法运算时,打印结果为0。对不起,西班牙语的变数,我必须用西班牙语交作业Java 与2矩阵相乘时的打印问题,java,matrix,matrix-multiplication,Java,Matrix,Matrix Multiplication,我试着对两个矩阵求和、减法和乘法,求和和和减法运算正确,但在进行乘法运算时,打印结果为0。对不起,西班牙语的变数,我必须用西班牙语交作业 package Segundo_Parcial; import java.util.Scanner; public class matriz { private Scanner teclado; private int[][] matriz1; private int[][] matriz2; private int[][
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();
}
}
package Segundo\u Parcial;
导入java.util.Scanner;
公共类矩阵{
私人扫描仪;
私有int[][]矩阵1;
私有int[][]矩阵2;
私有int[][]suma;
私人int[][]餐厅;
私有int[][]多;
私人浮动【】【】divi;
公共无效Datos(){
teclado=新扫描仪(System.in);
matriz1=新整数[5][5];
matriz2=新整数[5][5];
suma=新整数[5][5];
resta=新整数[5][5];
multi=新整数[5][5];
divi=新浮动[5][5];
System.out.println(“[Matriz 1]”);
对于(int i=0;i<5;i++){
对于(int j=0;j<5;j++){
系统输出打印项(“位置编号[“+i+”][“+j+”]:”;
matriz1[i][j]=teclado.nextInt();
}
}
System.out.println(“[Matriz 2]”);
对于(int i=0;i<5;i++){
对于(int j=0;j<5;j++){
系统输出打印项(“位置编号[“+i+”][“+j+”]:”;
matriz2[i][j]=teclado.nextInt();
}
}
}
公共空间sumaYresta(){
对于(int i=0;i<5;i++){
对于(int j=0;j<5;j++){
suma[i][j]=matriz1[i][j]+matriz2[i][j];
}
}
对于(int i=0;i<5;i++){
对于(int j=0;j<5;j++){
resta[i][j]=matriz1[i][j]-matriz2[i][j];
}
}
}
公共无效乘法(){
int x=0,jd=0,id=0,i=0,j=0,resu=0;
对于(i=0;i我猜您希望乘法发生在“乘法”中,因此我将其更改为:
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;
}
}
}
当你说这是为了学校的时候,我建议你看看你的代码风格,比如命名惯例和最重要的英语变量名和注释。(除非你的老师告诉你,否则不要理会我刚才说的:)
它使你的代码更加专业
此外,解决方案非常具体,您可能会对可变矩阵大小做出一些不同的选择
matri.multiplicacion();