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方法中创建数组并将其作为参数传递给每个方法,但是解释它是如何工作的可能是一个全新的问题,因此我将其留在那.