Pb syntaxe while true java

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"

3 réponses

  1. Modérateur
    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
    1. 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
      1. Modérateur
        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
    2. 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
      1. Modérateur
        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
      2. Contributeur
        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