Pb syntaxe while true java

Fermé
flambySYS Messages postés 43 Date d'inscription vendredi 25 février 2011 Statut Membre Dernière intervention 21 septembre 2012 - 28 oct. 2011 à 19:37
arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 - 28 oct. 2011 à 22:59
Bonjour,
je débute en java et je doit avoir un ti pb de syntaxe
je veux utilisé une boucle while(true) sur une fonction existant
j'ai essayer:

while(true=mafonction()){

instruction;
}

mais j'ai une erreur :
"The left-hand side of an assignment must be a variable"
A voir également:

3 réponses

KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
28 oct. 2011 à 20:17
La comparaison de valeurs se fait avec l'opérateur ==
L'opérateur = est utilisé pour l'affectation

Donc tu devrais faire while(true==mafonction())
Mais ici la comparaison ne sert à rien, car ma fonction() est déjà un booléen.
Le plus correct est donc while(mafonction())
0
flambySYS Messages postés 43 Date d'inscription vendredi 25 février 2011 Statut Membre Dernière intervention 21 septembre 2012
28 oct. 2011 à 20:29
lorsque je mets
while(true==mafonction())

il renvoie ça :
The operator == is undefined for the argument type(s) boolean, void


et pour ca
while(mafonction())

j'ai ça:
Type mismatch: cannot convert from void to boolean


je suis bloqué.
ma fonction est défini dans la meme classe mais n'est pas dans le meme bloc.
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
28 oct. 2011 à 20:33
Quand tu compares deux élements avec == ils doivent être de même type.

Ici visiblement c'est parce que mafonction ne renvoit pas de type booléen...
Quel est le type de retour de mafonction ?
0
flambySYS Messages postés 43 Date d'inscription vendredi 25 février 2011 Statut Membre Dernière intervention 21 septembre 2012
28 oct. 2011 à 20:42
le principe du code est une horloge:

public class horloge {

	public static void main(String[] args) {
		int[] time={0,0,0};
		while(incrHeure(time)) {
		afficherHeure(time);
	}
	}
private static void afficherHeure(int[] heure){
	System.out.println ("il est "+ heure[0] + heure[1] +heure [2]);
}
	
private static void incrHeure(int[] heure){
heure [2]++;
if(heure[2]==60){
	heure[2]=0;
	heure[1]++;
	if(heure[1]==60){
		heure[1]=0;
		heure[0]++;
		if(heure[0]==24){
			heure[0]=0;
		}
	}
}
}
}



Ma fonction incrHeure ne renvoie pas un bouleen mais comment je peu l'adapter?
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 020
28 oct. 2011 à 20:53
Tout dépend ce que tu veux faire...
Il faudrait que l'incrémentation de l'heure renvoie vrai ou faux. Pour moi ça n'a pas beaucoup de sens mais si ça en a pour toi, alors rajoute un return true, ou un return false là où il faut.
0
arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 291
28 oct. 2011 à 22:59
J'adore KX ça n'a pas de sens ^.^

Au passage, afficher Time affichera toujours la même chose, puisque time n'est commun qu'à une seule fonction, même si tu le passes en paramètres, il sera modifié dans ton autre fonction, mais pas mis à jour, pour la simple et bonne raison que celui que tu donnes en paramètre au début n'est en fait jamais incrémenté.
0