引用 以数组为参数的方法 的问题

一只电脑“小白” 2020-05-07 05:10:20



求解,在主方法中调用这个方法和结果怎么调用,新手在自我琢磨,实在琢磨不出来了。感谢大佬们!
...全文
107 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 7 楼 qybao 的回复:
[quote=引用 6 楼 一只电脑“小白” 的回复:] 我的目的是:想通过键盘输入矩阵后,通过序号选择功能的方式实现矩阵的各种运算。
问题不少,什么时候该用返回值什么时候不该用返回值你好像都不理解
import java.util.Scanner;
public class Matrix {
 
    public static void main(String[] args) {
        int [][][]elem; //定义必要的变量
        int [][]aArr;
        // TODO Auto-generated method stub
        System.out.println("--------矩阵运算-------");
        System.out.println("-------请选择功能-------");
        System.out.println("------1--矩阵加法------");
    /*    System.out.println("------2--矩阵减法------");
        System.out.println("------4--矩阵乘法------");
        System.out.println("------5--矩阵数乘------");*/
        int i;
        Scanner in=new Scanner(System.in);
        i =in.nextInt();
        switch(i) {
        case 1:
            //Set_GetElement.setElement();        //获取-->打印矩阵matrix
            elem = Set_GetElement.setElement(); 
            aArr = Sub_AddElement.setAddElement(elem[0], elem[1]);
            Sub_AddElement.printAddElement(aArr);
            break;
        case 2:
            break;
        case 3:
            break;
        case 4:
            break;
        case 5:
            break;
        }
    }
 
}

class Sub_AddElement extends Set_GetElement{
     
    public static int[][] setAddElement(int[][] matrix,int[][] matrix1) { //这里计算后要把结果返回,否则无法拿到你的计算结果
        int[][] aArr=new int[matrix.length][matrix[0].length];
        if(matrix !=null && matrix1 != null ) {
            for(int i=0; i<aArr.length;i++) {
                for(int j=0;j<aArr[i].length;j++) {
                    aArr[i][j]=matrix[i][j]+matrix1[i][j];
                }
            }
        }
        return aArr;
    }
     
    public static int[][] printAddElement(int[][] aArr){    //定义打印方法
        System.out.println("-----A + B矩阵为-----");
        for (int i=0;i<aArr.length ;i++ ){       
            for (int j=0;j<aArr[i].length ;j++ ){       
                System.out.print(aArr[i][j]+" ");    //打印结果aArr
            }
        }
        return aArr;
    }
     
}

class Set_GetElement{        //设置矩阵行列数方法
    public static int[][][] setElement() { //这里要返回你的输入结果,否则无法拿到你的输入数据
        int[][][] res = new int[2][][];
        Scanner in=new Scanner(System.in);
        System.out.println("请输入A矩阵行、列数--如(2 2)");
        int x=in.nextInt();        //A矩阵行数
        int y=in.nextInt();        //A矩阵列数
        res[0] = getElement(x, y);        //将行列数x、y作为A矩阵getElement的参数
        System.out.println("请输入B矩阵行、列数--如(2 2)");
        int z=in.nextInt();        //B矩阵列数
        int w=in.nextInt();        //B矩阵列数
        res[1] = getElement1(z,w);        //将行列数z、w作为B矩阵getElement的参数
        return res;
    }
     
    public static int[][] getElement(int x,int y){        //读取矩阵方法
        int matrix[][]=new int[x][y];
        System.out.println("请输入A矩阵"+x+"行"+y+"列矩阵元素:");
        Scanner in=new Scanner(System.in);
        for (int i=0;i<matrix.length ;i++ ){        //    外层循环控制
            for (int j=0;j<matrix[i].length ;j++ ){        //内层循环控制
                matrix[i][j]=in.nextInt();
            }
        }
        PrintElement.printMatrix(matrix);
        return matrix;
    }
 
     
    public static int[][] getElement1(int z,int w){
        Scanner in=new Scanner(System.in);
        int matrix1[][]=new int[z][w];
        System.out.println("请输入B矩阵"+z+"行"+w+"列矩阵元素:");
        for (int i=0;i<matrix1.length ;i++ ){        //    外层循环控制
            for (int j=0;j<matrix1[i].length ;j++ ){        //内层循环控制
                matrix1[i][j]=in.nextInt();
            }
        }
        PrintElement.printMatrix1(matrix1); 
        return matrix1;
         
    }
 
}


[/quote]对呀,刚刚上大一,学了一段时间想自己 编着试试,刚学到面向对象的章节,肯定会出很多问题的。总之还是谢谢您了,占用您时间了,实在感谢,我自己回去再琢磨琢磨。
qybao 2020-05-07
  • 打赏
  • 举报
回复
引用 6 楼 一只电脑“小白” 的回复:
我的目的是:想通过键盘输入矩阵后,通过序号选择功能的方式实现矩阵的各种运算。

问题不少,什么时候该用返回值什么时候不该用返回值你好像都不理解

import java.util.Scanner;
public class Matrix {

public static void main(String[] args) {
int [][][]elem; //定义必要的变量
int [][]aArr;
// TODO Auto-generated method stub
System.out.println("--------矩阵运算-------");
System.out.println("-------请选择功能-------");
System.out.println("------1--矩阵加法------");
/* System.out.println("------2--矩阵减法------");
System.out.println("------4--矩阵乘法------");
System.out.println("------5--矩阵数乘------");*/
int i;
Scanner in=new Scanner(System.in);
i =in.nextInt();
switch(i) {
case 1:
//Set_GetElement.setElement(); //获取-->打印矩阵matrix
elem = Set_GetElement.setElement();
aArr = Sub_AddElement.setAddElement(elem[0], elem[1]);
Sub_AddElement.printAddElement(aArr);
break;
case 2:
break;
case 3:
break;
case 4:
break;
case 5:
break;
}
}

}

class Sub_AddElement extends Set_GetElement{

public static int[][] setAddElement(int[][] matrix,int[][] matrix1) { //这里计算后要把结果返回,否则无法拿到你的计算结果
int[][] aArr=new int[matrix.length][matrix[0].length];
if(matrix !=null && matrix1 != null ) {
for(int i=0; i<aArr.length;i++) {
for(int j=0;j<aArr[i].length;j++) {
aArr[i][j]=matrix[i][j]+matrix1[i][j];
}
}
}
return aArr;
}

public static int[][] printAddElement(int[][] aArr){ //定义打印方法
System.out.println("-----A + B矩阵为-----");
for (int i=0;i<aArr.length ;i++ ){
for (int j=0;j<aArr[i].length ;j++ ){
System.out.print(aArr[i][j]+" "); //打印结果aArr
}
}
return aArr;
}

}

class Set_GetElement{ //设置矩阵行列数方法
public static int[][][] setElement() { //这里要返回你的输入结果,否则无法拿到你的输入数据
int[][][] res = new int[2][][];
Scanner in=new Scanner(System.in);
System.out.println("请输入A矩阵行、列数--如(2 2)");
int x=in.nextInt(); //A矩阵行数
int y=in.nextInt(); //A矩阵列数
res[0] = getElement(x, y); //将行列数x、y作为A矩阵getElement的参数
System.out.println("请输入B矩阵行、列数--如(2 2)");
int z=in.nextInt(); //B矩阵列数
int w=in.nextInt(); //B矩阵列数
res[1] = getElement1(z,w); //将行列数z、w作为B矩阵getElement的参数
return res;
}

public static int[][] getElement(int x,int y){ //读取矩阵方法
int matrix[][]=new int[x][y];
System.out.println("请输入A矩阵"+x+"行"+y+"列矩阵元素:");
Scanner in=new Scanner(System.in);
for (int i=0;i<matrix.length ;i++ ){ // 外层循环控制
for (int j=0;j<matrix[i].length ;j++ ){ //内层循环控制
matrix[i][j]=in.nextInt();
}
}
PrintElement.printMatrix(matrix);
return matrix;
}


public static int[][] getElement1(int z,int w){
Scanner in=new Scanner(System.in);
int matrix1[][]=new int[z][w];
System.out.println("请输入B矩阵"+z+"行"+w+"列矩阵元素:");
for (int i=0;i<matrix1.length ;i++ ){ // 外层循环控制
for (int j=0;j<matrix1[i].length ;j++ ){ //内层循环控制
matrix1[i][j]=in.nextInt();
}
}
PrintElement.printMatrix1(matrix1);
return matrix1;

}

}


  • 打赏
  • 举报
回复
引用 5 楼 qybao 的回复:
[quote=引用 4 楼 一只电脑“小白” 的回复:] 我现在就想在case1:后面输出 printAddElement方法的结果,应该怎么改,能不能帮我写一下完整的case里的语句,我一会儿结贴的时候加点儿分。谢谢您了,我实在是懵了,我明白您的意思但是 就是改不过来。
关键是不知道你的setElement方法是怎样的?你贴出代码Set_GetElement的代码看看, 看你贴出的代码,你把main方法的 Set_GetElement.setElement(); 改成 int [][]aArr = Set_GetElement.setElement(); 试试 [/quote] 我的目的是:想通过键盘输入矩阵后,通过序号选择功能的方式实现矩阵的各种运算。 main代码:
import java.util.Scanner;
public class Matrix {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("--------矩阵运算-------");
		System.out.println("-------请选择功能-------");
		System.out.println("------1--矩阵加法------");
	/*	System.out.println("------2--矩阵减法------");
		System.out.println("------4--矩阵乘法------");
		System.out.println("------5--矩阵数乘------");*/
		int i;
		Scanner in=new Scanner(System.in);
		i =in.nextInt();
		switch(i) {
		case 1:
			Set_GetElement.setElement();		//获取-->打印矩阵matrix
			
			
			break;
		case 2:
			break;
		case 3:
			break;
		case 4:
			break;
		case 5:
			break;
		}
	}

}
Sub_AddElement代码:
public class Sub_AddElement extends Set_GetElement{
	
	public static void setAddElement(int[][] matrix,int[][] matrix1) {
		int[][] aArr=new int[matrix.length][matrix[0].length];
		if(matrix !=null && matrix1 != null ) {
			for(int i=0; i<aArr.length;i++) {
				for(int j=0;j<aArr[i].length;j++) {
					aArr[i][j]=matrix[i][j]+matrix1[i][j];
				}
			}
		}
	}
	
	public static int[][] printAddElement(int[][] aArr){	//定义打印方法
		System.out.println("-----A + B矩阵为-----");
		for (int i=0;i<aArr.length ;i++ ){		
			for (int j=0;j<aArr[i].length ;j++ ){		
				System.out.print(aArr[i][j]+" ");	//打印结果aArr
			}
		}
		return aArr;
	}
	
}
Set_GetElement代码:
//读取、存储输入数据设置矩阵行列数

class Set_GetElement{		//设置矩阵行列数方法
	public static void setElement() {
		Scanner in=new Scanner(System.in);
		System.out.println("请输入A矩阵行、列数--如(2 2)");
		int x=in.nextInt();		//A矩阵行数
		int y=in.nextInt();		//A矩阵列数
		getElement(x, y);		//将行列数x、y作为A矩阵getElement的参数
		System.out.println("请输入B矩阵行、列数--如(2 2)");
		int z=in.nextInt();		//B矩阵列数
		int w=in.nextInt();		//B矩阵列数
		getElement1(z,w);		//将行列数z、w作为B矩阵getElement的参数
	}
	
	public static int[][] getElement(int x,int y){		//读取矩阵方法
		int matrix[][]=new int[x][y];
		System.out.println("请输入A矩阵"+x+"行"+y+"列矩阵元素:");
		Scanner in=new Scanner(System.in);
		for (int i=0;i<matrix.length ;i++ ){		//	外层循环控制
			for (int j=0;j<matrix[i].length ;j++ ){		//内层循环控制
				matrix[i][j]=in.nextInt();
			}
		}
		PrintElement.printMatrix(matrix);
		return matrix;
	}

	
	public static int[][] getElement1(int z,int w){
		Scanner in=new Scanner(System.in);
		int matrix1[][]=new int[z][w];
		System.out.println("请输入B矩阵"+z+"行"+w+"列矩阵元素:");
		for (int i=0;i<matrix1.length ;i++ ){		//	外层循环控制
			for (int j=0;j<matrix1[i].length ;j++ ){		//内层循环控制
				matrix1[i][j]=in.nextInt();
			}
		}
		PrintElement.printMatrix1(matrix1); 
		return matrix1;
		
	}

}
qybao 2020-05-07
  • 打赏
  • 举报
回复
引用 4 楼 一只电脑“小白” 的回复:
我现在就想在case1:后面输出 printAddElement方法的结果,应该怎么改,能不能帮我写一下完整的case里的语句,我一会儿结贴的时候加点儿分。谢谢您了,我实在是懵了,我明白您的意思但是 就是改不过来。

关键是不知道你的setElement方法是怎样的?你贴出代码Set_GetElement的代码看看,
看你贴出的代码,你把main方法的 Set_GetElement.setElement(); 改成 int [][]aArr = Set_GetElement.setElement(); 试试


  • 打赏
  • 举报
回复
引用 3 楼 qybao 的回复:
那你在哪取得aArr的,你总有个取得aArr的代码main才会认识aArr呀 比如 int [][]aArr = xxx;//取得你的aArr结果 否则变量没定义,main方法咋认识它?这是最基本的语法,变量先定义再使用。
我现在就想在case1:后面输出 printAddElement方法的结果,应该怎么改,能不能帮我写一下完整的case里的语句,我一会儿结贴的时候加点儿分。谢谢您了,我实在是懵了,我明白您的意思但是 就是改不过来。
qybao 2020-05-07
  • 打赏
  • 举报
回复
那你在哪取得aArr的,你总有个取得aArr的代码main才会认识aArr呀 比如 int [][]aArr = xxx;//取得你的aArr结果 否则变量没定义,main方法咋认识它?这是最基本的语法,变量先定义再使用。
  • 打赏
  • 举报
回复
引用 1 楼 qybao 的回复:
main方法的aArr变量没定义啊? 比如在main方法里追加 int [][]aArr = new int[][]{{1}, {1,2}, {1,2,3}};
我的aArr数组是矩阵加法里的作为结果的数组,在引用时还需要再main方法定义吗?不是直接引用输出方法就行? 劳烦解答。感谢
qybao 2020-05-07
  • 打赏
  • 举报
回复
main方法的aArr变量没定义啊? 比如在main方法里追加 int [][]aArr = new int[][]{{1}, {1,2}, {1,2,3}};

62,626

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧