日期:2014-05-20  浏览次数:20720 次

一个矩阵问题
import   java.util.Scanner;
public   class   Juzheng1
{   public   static   void   main(String   args[])
      {   int   a[][]=new   int[3][4];               //预先定义输入3行4列
          int   b[][]=new   int[4][3];
          int   i,j;
        System.out.println( "input   matrix   a: ");
        for(i=0;i <3;i++)
              {   for(j=0;j <4;j++)
                  a[i][j]=input.nextInt();
                 
              }
。。。。。。。。
想写个矩阵转置,可以随便输入m*n的矩阵,然后将其转置并输出,上面写的只是预先定义的几行几列而并不适用与m*n的矩阵,哪位能帮帮忙?


------解决方案--------------------
mark
------解决方案--------------------
把m和n定义成可以传入的参数,先确认下你是想以那种方式传入,比如文本、命令行、其他类或者,在你的代码中定义好传入参数的就行,楼上方法楼主如果看懂了,这个问题也就解决了
------解决方案--------------------
import java.util.Scanner;

public class MatrixTest {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int row,col;
//输入行
System.out.println( "row: ");
row = in.nextInt();
//输入列
System.out.println( "col: ");
col = in.nextInt();
//根据行和列定义存放原矩阵的数组
int[][] originalMatrix = new int[row][col];
//定义存放转置矩形的数组
int[][] transposeMatrix = new int[col][row];
//提示用户输入原矩阵的每个元素,用0为起始坐标
for(int i = 0;i < row;i++){
for(int j = 0; j < col;j++){
System.out.println( "original[ " + i + "][ " + j + "]: ");
originalMatrix[i][j] = in.nextInt();
transposeMatrix[j][i] = originalMatrix[i][j];

}
}
//输出原矩阵
System.out.println( "originalMatrix: ");
for(int i = 0;i < row;i++){
for(int j = 0; j < col;j++){
System.out.printf( "%4d ",originalMatrix[i][j]);

}
System.out.println();
}
//输出转置后的矩阵
System.out.println( "transposeMatrix: ");
for(int j = 0;j < col;j++){
for(int i = 0;i < row;i++){
System.out.printf( "%4d ",transposeMatrix[j][i]);
}
System.out.println();
}


}
}
------解决方案--------------------
利用输入流

class FromKeyBoard{
//初始化用来接收从键盘输入的字符串
String str = null;
//初始化一个将字符串转化成整形的整形变量
int result = 0;
public FromKeyBoard_method(){
System.out.println( "输入数值: ");
//因为涉及到键盘输入,所以要捕捉异常
try{
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
str = bf.readLine();
result = Integer.parseInt(str);
}catch(IOException e){}
rerurn result;
}
//然后在main函数中定义一个FromKeyBoard的对象然后两次调用FromKeyBoard_method()
//几下来就不用说了吧?祝你好运!
------解决方案--------------------
只要把3,4改成命令行参数转换的值就可以了
------解决方案--------------------
我是初学者,也试着写一下,编译通过了

/*This program tends to transpose the Matrix user input
*and then outputs the result.
*
*