Problem avec system.out.println() de java
Fermé
Bonjour,
Je veux écrire sur l'écran le résultat d'une méthode , par exemple public void cal (arg a),et cette méthode ( calc()) appartient à une class calcul , mais j'ai un probleme avec la méthode system.out.println(calcul.calc(x)); . J'ai le message d'erreur suivant:
'void' type is not allowed here
Sincère remerciement.
Je veux écrire sur l'écran le résultat d'une méthode , par exemple public void cal (arg a),et cette méthode ( calc()) appartient à une class calcul , mais j'ai un probleme avec la méthode system.out.println(calcul.calc(x)); . J'ai le message d'erreur suivant:
'void' type is not allowed here
Sincère remerciement.
2 réponses
arth
Messages postés
9374
Date d'inscription
mardi 27 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2016
1 292
20 sept. 2008 à 21:36
20 sept. 2008 à 21:36
Bonsoir,
Cela est tout à fait normal.
En effet la fonction System.out.println doit afficher quelque chose donc une vrai variable avec un valeur non null.
Ici l'erreur te dit void type is not allowed here, ce qui est normal puisque tu lui fait directement System.out.println(calcul.calc()) .
OR calcul.calc() ne retourne aucun résultat ou variable si tu préfères qui puisse être affiché du genre un entier ou une String, puisque la fonction calc() est définie en public void et non en public String calc() ou encore public int calc() par exemple.
Tu ne peux pas faire non plus : int resultat = calc(arg a); puisque calc() comme dit plus haut est définie en VOID.
Donc au lieu de mettre public void calc(arg a), remplace ceci par public int calc(arg a) ou encore int par le type de variable qui doit être retourné. ET ne pas oublier de faire un return.
Pour récapituler et par exemple :
public class calcul
{
int a = 10;
public calcul()
{
.......
System.out.println("Résultat de l'opération : "+calc(a));
}
public int calc(int parameter)
{
System.out.println("On ne fait que retourner comme résultat la valeur de l'entier passé en paramètre");
return parameter;
}
}
Voilà j'espère que tu auras compris et si tu as des questions n'hésite pas.
Cela est tout à fait normal.
En effet la fonction System.out.println doit afficher quelque chose donc une vrai variable avec un valeur non null.
Ici l'erreur te dit void type is not allowed here, ce qui est normal puisque tu lui fait directement System.out.println(calcul.calc()) .
OR calcul.calc() ne retourne aucun résultat ou variable si tu préfères qui puisse être affiché du genre un entier ou une String, puisque la fonction calc() est définie en public void et non en public String calc() ou encore public int calc() par exemple.
Tu ne peux pas faire non plus : int resultat = calc(arg a); puisque calc() comme dit plus haut est définie en VOID.
Donc au lieu de mettre public void calc(arg a), remplace ceci par public int calc(arg a) ou encore int par le type de variable qui doit être retourné. ET ne pas oublier de faire un return.
Pour récapituler et par exemple :
public class calcul
{
int a = 10;
public calcul()
{
.......
System.out.println("Résultat de l'opération : "+calc(a));
}
public int calc(int parameter)
{
System.out.println("On ne fait que retourner comme résultat la valeur de l'entier passé en paramètre");
return parameter;
}
}
Voilà j'espère que tu auras compris et si tu as des questions n'hésite pas.
22 sept. 2008 à 10:25
Merci beaucoup, c'est très gentil de ta part de répondre.
OK, j'ai compris ma faute, mais le problème est que ma méthode peut retourné des résultats avec des types différents? c'est pour cette raison que j'ai pensé d'utiliser 'void'.
Merci.
22 sept. 2008 à 13:33
calc(String string)
calc(int integer)
etc ...
Une seule fonction pour un seul type de dopnnées.
Mais tu peux très bien faire plusieurs fonctions calc mais avec un paramétrage différent, un coup une String, un coup un int comme j'ai écrit plus haut.
23 sept. 2008 à 12:33
je vais voir avec les types retournés.
Merci.