如何在另一种方法中使用一个方法的变量?

Jam*_*ame 5 java methods multidimensional-array

我想知道如何a[i][j]在方法Scores()中使用变量来在方法MD()sumD()以下代码中使用它:

在我的代码中,方法MD()sumD()没有得到结果.

public class Test3 {

  public void Scores() { 
   double[][] a= new double[3][5];
   int i,j;

   for(i=0; i<3; i++ ){
        for(j=0; j<5; j++){
                a[i][j]= (double) Math.random(); 
                System.out.println("a[" + i + "][" + j + "] = " +a[i][j]);
        }   
   }   
}
  public void MD(){
   double[][] b =new double[3][5];
   int [] m = new int[5];
   int i,j;
   //double[][] a= new double[3][5];

   for(j= 0; j<5; j++)
        for(i=0 ; i<3 ; i++) 
        {
           b[i][j]=0.0;                                                    
           if(a[i][j]>0.0) 
              m[j]++;
        }   
    for(j= 0; j<5; j++){
        for(i=0 ; i<3 ; i++) {
           if(a[i][j] > 0.0){
               b[i][j]=a[i][j]*m[j];
               System.out.println("b[" + i + "][" + j + "] = " + b[i][j]);
           }    
       }        
   }                
}

public void sumD(){

int i,j,n;
double[] sum= new double[3];
double[] k= new double[3];
//double[][] a= new double[3][5];

  for(i=0; i<3; i++){
      n=0;
      sum[i]=0.0;
      for(j=0; j<5; j++){
          if(a[i][j]>0.0){
              sum[i] += (a[i][j])*2;
              n++;
          }                
      }
      k[i]=sum[i]/n;
      System.out.println("k[" + i + "] = " + k[i]); 
 }
}

public static void main(String[] args){
    Test3 print= new Test3();
    print.Scores();
    print.MD();
    print.sumD();

 }  
}
Run Code Online (Sandbox Code Playgroud)

提前致谢.

Oli*_*rth 13

你不能.方法内定义的变量是该方法的局部变量.

如果要在方法之间共享变量,则需要将它们指定为类的成员变量.或者,您可以将它们从一个方法传递给另一个方法作为参数(这并不总是适用).


小智 5

看起来你正在使用实例方法而不是静态方法.

如果你不想创建一个对象,你应该将所有方法声明为静态,如下所示

private static void methodName(Argument args...)
Run Code Online (Sandbox Code Playgroud)

如果您希望所有这些方法都可以访问变量,则应该在方法之外初始化它并限制其范围,将其声明为私有.

private static int[][] array = new int[3][5];
Run Code Online (Sandbox Code Playgroud)

全局变量通常被低估(特别是对于像你这样的情况),因为在大型程序中它们可能会造成严重破坏,因此将其设为私有将至少可以防止出现一些问题.

另外,我会说平常:你应该试着保持你的代码有点整洁.使用描述性的类,方法和变量名称,并保持您的代码整洁(适当的缩进,换行等)和一致.

这是您的代码应该是什么样的最终(缩写)示例:

public class Test3 {
    //Use this array in your methods
    private static int[][] scores = new int[3][5];

    /* Rather than just "Scores" name it so people know what
     * to expect
     */
    private static void createScores() {
        //Code...
    }
    //Other methods...

    /* Since you're now using static methods, you don't 
     * have to initialise an object and call its methods.
     */
    public static void main(String[] args){
        createScores();
        MD();   //Don't know what these do
        sumD(); //so I'll leave them.
    }
}
Run Code Online (Sandbox Code Playgroud)

理想情况下,既然您正在使用数组,那么您将在main方法中创建数组并将其作为参数传递给每个方法,但是解释它是如何工作的可能是一个全新的问题,因此我将其留在那.