Utilisation de méthode en java

cs_hakim01 Messages postés 2 Date d'inscription dimanche 6 juin 2004 Statut Membre Dernière intervention 14 mars 2011 - 14 mars 2011 à 00:50
 Utilisateur anonyme - 21 mars 2011 à 21:47
bonjour, j'ai le problème suivant, pour l'appelle de procedure(methode) en java
mon objectif est de récupérer les champs de la methode saisieValeur, pour les éxploiter dans le menu principal.
moi je veut récupérer les champs: soldecourrant, versement, achats de la méthode saisievaleur, pour les exploiter dans d'autre fonction dans le programme principale,
mais j'ai l'érreur: il faut initialiser les champs dans la méthode principale,et ça il récupére pâs les valeurs que j'ai passé dans la méthode Saisievaleur.
voila le code, merci pour votre réponse:

import java.text.DecimalFormat;
import java.util.Scanner;
public class TextReleve {

public static void main (String args[]){
Scanner readln= new Scanner(System.in);
double soldecourrant,soldeprecedent,versement,achats, nouveausolde;
double interet,min;

//appelle a la fonction saisieValeur
saisieValeur(soldecourrant,soldeprecedent,versement,achats,readln);

//appelle a la fonction intérêt

interet=calculInteret(soldecourrant,readln);
//les charge que le client devra payer

nouveausolde=soldecourrant+achats;

//appelle a la fonction minimum pour le calcul du minimum exigé
min=minimum(nouveausolde,readln);

//affichage du resultat
affichageresultat( soldeprecedent,versement, soldecourrant,interet,nouveausolde,min, readln );


}


private static saisieValeur ( double soldecour,double soldprec, double versem,double achat, Scanner readln){


double soldecourrant,soldeprecedent,achats, versement;
String temp;
//demande au client de rentrer le solde précedent

System.out.println ("\nveuillez tapez votre solde precedent:");
soldeprecedent=readln.nextDouble();
while(soldeprecedent<0){
temp = readln.nextLine();
System.out.print("S.V.P, taper une valeur sup à 0 : ");
soldeprecedent=readln.nextDouble();
}

//le versement du client
System.out.println ("\nveuillez tapez votre versement:");
versement=readln.nextDouble();
while(versement<0){
temp=readln.nextLine();
System.out.print("S.V.P, taper une valeur supérieur à 0:");
versement=readln.nextDouble();
}
//les achat du client;

System.out.println ("\nveuillez tapez vos achats:");
achats=readln.nextDouble();
while(achat<0){
temp=readln.nextLine();
System.out.print("S.V.P, taper une valeur supérieur à 0:");
achats=readln.nextDouble();
}

soldecourrant=soldeprecedent-versement;
//return soldecourrant;
}

}

3 réponses

cs_kazer04 Messages postés 182 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 14 mars 2011
14 mars 2011 à 09:00
Initialise tes valeur avec 0 par exemple
double soldecourrant=0.0,soldeprecedent=0.0,versement=0.0,achats=0.0, nouveausolde=0.0;


@+
0
cs_hakim01 Messages postés 2 Date d'inscription dimanche 6 juin 2004 Statut Membre Dernière intervention 14 mars 2011
14 mars 2011 à 17:04
effectivement, j'ai fait, ca, mais apres à l'éxécution, le programme principale, prend les valeurs 0.0, et nom les valeurs que j'ai pas dans la procedure saisieValeur. donc si pas intéressant. si ca le soucis.
0
Utilisateur anonyme
21 mars 2011 à 21:47
Salut,

Si j'ai bien compris tu as des attributs dans ton main et tu veux que ta méthode saisieValeur(...) modifie ces attributs là ?

Le truc je pense (enfin, si j'ai bien compris ce que tu veux faire), c'est que tu passes tes attributs dans ta méthode. Or le soucis c'est que les doubles, les int... sont passés par valeur. Ils seront alors propres à ta méthode et donc les modifs faites sur ces attributs concerneront que ta méthode.

L'idéal serait que tu mettes tes attributs static et que tu appelles simplement ta méthode. D'ailleurs, je em demande si ça vaut la peine de mettre ça en statique.
Un truc de ce genre (dis le si je ne réponds pas à ton problème ) :


public class TextReleve {

public static void main (String args[]){
static Scanner readln= new Scanner(System.in);
static double soldecourrant,soldeprecedent,versement,achats, nouveausolde;
static double interet,min;

//appelle a la fonction saisieValeur
saisieValeur();

}


private static saisieValeur (){

String temp;

System.out.println ("\nveuillez tapez votre solde precedent:");
soldeprecedent=readln.nextDouble();
while(soldeprecedent<0){
temp = readln.nextLine();
System.out.print("S.V.P, taper une valeur sup à 0 : ");
soldeprecedent=readln.nextDouble();
}

//le versement du client
System.out.println ("\nveuillez tapez votre versement:");
versement=readln.nextDouble();
while(versement<0){
temp=readln.nextLine();
System.out.print("S.V.P, taper une valeur supérieur à 0:");
versement=readln.nextDouble();
}
//les achat du client;

System.out.println ("\nveuillez tapez vos achats:");
achats=readln.nextDouble();
while(achat<0){
temp=readln.nextLine();
System.out.print("S.V.P, taper une valeur supérieur à 0:");
achats=readln.nextDouble();
}

soldecourrant=soldeprecedent-versement;
//return soldecourrant;
}

} 


Après, je sais pas si j'ai compris ce que tu voulais faire...
0
Rejoignez-nous