Comment utiliser une variable d'une méthode à une autre méthode?
Je veux savoir comment puis-je utiliser la variable a[i][j]
dans la méthode Scores()
de l'utiliser dans les méthodes MD()
et sumD()
dans le code suivant:
Dans mon code, les méthodes MD()
et sumD()
ne pouvez pas obtenir le résultat.
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();
}
}
Merci d'avance.
Passer comme un argument.
public class Test3 { private double[][] a= new double[3][5];
public class Test3 { private double[][] a= new double[3][5];
OriginalL'auteur Jame | 2012-02-19
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas. Les Variables définies à l'intérieur d'une méthode sont locales à cette méthode.
Si vous souhaitez partager des variables entre les méthodes, alors vous aurez besoin de les spécifier en tant que variables membres de la classe. Alternativement, vous pouvez passer d'une méthode à l'autre, les arguments (ce n'est pas toujours le cas).
OriginalL'auteur Oliver Charlesworth
Dirait que vous êtes à l'aide de méthodes d'instance au lieu de statique.
Si vous ne voulez pas créer un objet, vous devez déclarer tous vos méthodes statiques, donc quelque chose comme
Si vous voulez une variable à être accessible par l'ensemble de ces méthodes, vous devez l'initialiser à l'extérieur de l'méthodes et à en limiter la portée, de la déclarer privé.
Les variables globales sont généralement méprisés (en particulier pour des situations comme la votre) parce que, dans un programme à grande échelle, ils peuvent faire des ravages, ce qui en fait l'privés permettra d'éviter certains problèmes à tout le moins.
Aussi, je vais dire l'habitude: Vous devriez essayer de garder votre code un peu en ordre. Utiliser descriptif de la classe, la méthode et les noms de variables et de garder votre code soignée (avec une bonne indentation, mais les sauts de ligne etc.) et cohérente.
Voici une finale (raccourcie) exemple de ce que votre code devrait ressembler à:
Idéalement, puisque vous êtes à l'aide d'un tableau, vous permettra de créer la matrice de dans la méthode main et de le passer en argument à travers chaque méthode, mais expliquer comment cela fonctionne est probablement une toute nouvelle question sur son propre, donc je vais en rester là.
OriginalL'auteur Hedja
Il suffit de déplacer la déclaration de
a
pour en faire une propriété privée de la classeTest3
, comme ceci:OriginalL'auteur Diego
juste faire un[i][j] comme variable de classe, de la déclarer en dehors de la
Scores()
, juste en dessous du nom de la classeOriginalL'auteur Parth
vous pouvez déclarer un tableau 2d pointeur en tant que membre de la classe. Puis de déclarer la taille et de la valeur à l'intérieur d'une fonction membre. Dans ce cas, vous pouvez accéder à ce formulaire une autre fonction..
Voir l'utilisation de T[][] dans le présent code
OriginalL'auteur Shuvendu Roy
Passer d'un argument ou d'en faire une classe var
OriginalL'auteur Micah Armantrout
Si vous voulez être en mesure d'utiliser la 2d matrice un, vous devez la déclarer en dehors de vos méthodes.
Vous verrez que j'ai déménagé de la déclaration d'un (anciennement à l'intérieur de Scores(), et que j'ai commenté) en dehors de la fonction, et il est maintenant un champ de la classe Test3. Lorsque vous déclarez une variable dans une fonction, elle est locale à cette fonction. Il ne peut pas être vu par d'autres fonctions, etc. Si vous le déclarer comme un champ de classe, vos fonctions peuvent le voir. Jetez un oeil à ceci, car il peut aider. Language/VariableScope.htm">http://www.java2s.com/Tutorial/Java/0020_Language/VariableScope.htm
Le terme "étendue", renvoie à la durée de vie d'une variable et d'où il peut être vu. Espérons que cette aide!
OriginalL'auteur DunClickMeBro
OriginalL'auteur Atikant Negi
OriginalL'auteur rajiv baghel