2014-09-25 90 views
-5

我是编程初学者,希望有人能帮助我解决我的问题,请如何从方法返回数组?

public int [][]matrixSetup(String size, char i) throws IOException { 

    int size_num = Integer.parseInt(size); 

    if (size_num > 1 && size_num < 4) { 
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 


    System.out.println("input the value store them, they arrange as" + i + "11,"+ i+ "12," + i +"21,"+ i +"22 etc"); 

    for(int row = 0; row < size_num ; row++) 
     for(int col = 0 ; col < size_num ; col++){ 
      int [][]A = new int [size_num][size_num]; 
      String ipS = br.readLine();      //ipS = input String 
      int input_value = Integer.parseInt(ipS); 
      A[row][col] = input_value;   
     } 
    } else System.out.println("invalid matrix size!"); 
    return A; //How to return the matrix? 
} 
+1

它是一个java语言, – 2014-09-25 19:32:02

+1

您正在为每个迭代的新数组。你应该在你的循环之外创建A. – eternay 2014-09-25 19:32:18

+2

了解[变量范围](http://www.java-made-easy.com/variable-scope.html)。 – GriffeyDog 2014-09-25 19:33:18

回答

0

要回答你的问题“如何来回报矩阵”:你已经在做了正确的方式。从目前为止的评论中可以看出,问题在于A的声明。

A声明和内部初始化for -loop:

int [][]A = new int [size_num][size_num]; 

因此其知名度仅限于for -loop。为了使A可见你必须移动它的声明中已经存在的return声明:

int size_num = Integer.parseInt(size); 
int[][] A = new int[size_num][size_num]; 
if (size_num > 1 && size_num < 4) { 
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
    for(int row = 0; row < size_num ; row++) 
    for(int col = 0 ; col < size_num ; col++){ 
     String ipS = br.readLine(); 
     int input_value = Integer.parseInt(ipS); 
     A[row][col] = input_value; 
    } 
} else { 
    System.out.println("invalid matrix size!"); 
} 
return A; 
+0

谢谢Stefan Freitag – 2014-09-25 20:08:58