Contenu | Rechercher | Menus

Annonce

Ubuntu 16.04 LTS
Commandez vos DVD et clés USB Ubuntu-fr !

Pour en savoir un peu plus sur l'équipe du forum.

Appel à contributeurs pour la doc.

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

#1 Le 13/03/2017, à 14:13

plouf1221

Les enums en java ... Une erreur invisible à mes yeux[RESOLU]

Bonjour,

Depuis quelques temps maintenant je commence l'étude de la programmation java.
J'ai beau cherché, regardé ligne par ligne je ne vois pas une seul erreur.
Un autre pair d'oeuils serai la bienvenue.
Mon code est ci dessous ;

package nume;

public class EnumComp {

	
		enum Jour { lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche };
		Jour courant;  //ERREUR ON TOKEN "; "
		courant = Jour.mardi;
		
		if ( courant = Jour.dimanche )
			system.out.println("On se repose");
		else
			system.out.println("On bosse");
		
		if ( couran.equals(Jour.dimanche) )
			system.out.println("On se repose");
		else system.out.println("On bosse");
		
		if ( courant.compareTo ( Jour.samedi ) < 0 )
			system.out.println("Ce n'est pas encore le week end");
		
		if ( courant.ordinal() < 5 )
			system.out.println ("rang du jour dans la semaine (lundi = 1) : "+couran.ordinal() + 1);

} // ERREUR syntax manque un }

Merci de votre aide

Dernière modification par plouf1221 (Le 13/03/2017, à 16:59)

Hors ligne

#2 Le 13/03/2017, à 15:19

ssdg

Re : Les enums en java ... Une erreur invisible à mes yeux[RESOLU]

C'est moi ou ton code n'est pas dans une méthode?

Sauf certains cas bien particuliers et déconseillés, java s'attendrait à :

package nume;

public class EnumComp {

	
		enum Jour { lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche };

public void main(String... args){
		Jour courant;  //ERREUR ON TOKEN "; "
		courant = Jour.mardi;
		....	
		if ( courant.ordinal() < 5 )
			system.out.println ("rang du jour dans la semaine (lundi = 1) : "+couran.ordinal() + 1);
}
}

s'il n'y a pas de solution, c'est qu'il n'y a pas de problème... ou pas.

Hors ligne

#3 Le 13/03/2017, à 16:49

plouf1221

Re : Les enums en java ... Une erreur invisible à mes yeux[RESOLU]

Voici le code complet, j'ai oublié quelques morceaux en particuliers  ceux que tu précises.
Maintenant si je mets ce code dans le main j'ai encore bien plus d'erreurs ! C'est pour cette raison que j'ai supprimer la méthode main.

package nume;

public class EnumComp {
	
		enum Jour { lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche };
		Jour courant;
		courant = Jour.mardi;
		
		if ( courant = Jour.dimanche )
			system.out.println("On se repose");
		else
			system.out.println("On bosse");
		
		if ( couran.equals(Jour.dimanche) )
			system.out.println("On se repose");
		else system.out.println("On bosse");
		
		if ( courant.compareTo ( Jour.samedi ) < 0 )
			system.out.println("Ce n'est pas encore le week end");
		
		if ( courant.ordinal() < 5 )
		system.out.println ("rang du jour dans la semaine (lundi = 1) : "+couran.ordinal() + 1);	
}

Hors ligne

#4 Le 13/03/2017, à 16:54

soshy

Re : Les enums en java ... Une erreur invisible à mes yeux[RESOLU]

1- voir la reponse de ssdg
2-

if ( courant = Jour.dimanche )

c'est une affectation et pas une comparaison.
3-

system.out.println(...)

il faut une majuscule a System. Partout.
4-

if ( couran.equals(Jour.dimanche) )

il manque un T a courant.
5-

system.out.println ("rang du jour dans la semaine (lundi = 1) : "+couran.ordinal() + 1);

voir 3 et 4.

A vu de nez, on doit avoir fait le tour.


P.S.: C'est pas parce qu'il y a moins d'erreur, que le code est plus juste. C'est plutôt que l'analyseur est incapable d'analyser plus en profondeur a causes des anomalies qu'il a deja rencontres. Donc retirer du code parce que ca donne plus d'erreur, c'est pas forcement une bonne chose.

Dernière modification par soshy (Le 13/03/2017, à 16:57)

Hors ligne

#5 Le 13/03/2017, à 16:55

plouf1221

Re : Les enums en java ... Une erreur invisible à mes yeux[RESOLU]

J'ai trouvé la type enum n'a rien a faire dans la méthode main, il est a part.
Et le reste du code quand à lui va dans la main.
Et avec toute vos précieuses remarques cela donne le code :

package nume;

public class EnumComp {
		enum Jour { lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche };
		
		public static void main(String[] args) {
			Jour courant;
			courant = Jour.mardi;
			
			if ( courant == Jour.dimanche)
				System.out.println("On se repose");
			else
				System.out.println("On bosse");
			
			if ( courant.equals(Jour.dimanche) )
				System.out.println("On se repose");
			else System.out.println("On bosse");
			
			if ( courant.compareTo ( Jour.samedi ) < 0 )
				System.out.println("Ce n'est pas encore le week end");
			
			if ( courant.ordinal() < 5 )
			System.out.println ("rang du jour dans la semaine (lundi = 1) : "+courant.ordinal() + 1);	
		}
		
}

MERCI

Dernière modification par plouf1221 (Le 13/03/2017, à 16:59)

Hors ligne

#6 Le 13/03/2017, à 17:02

soshy

Re : Les enums en java ... Une erreur invisible à mes yeux[RESOLU]

Dernier detail, pour comparer 2 choses, tu oublies == sauf si c'est un type long (et pas Long) boolean (et pas Boolean), int etc.

== c'est pour les types primitif. Tout le reste, c'est .equals()

Hors ligne

#7 Le 15/03/2017, à 14:43

ssdg

Re : Les enums en java ... Une erreur invisible à mes yeux[RESOLU]

@soshi: Dans le cas des enums, le == marche puisque le nombre d'instances est fini (déclaré dans l'enum) et crée au chargement de la "classe" (l'enum) en mémoire.
Toutefois, soshi as raison sur le fond. Si cela marche, ce n'est pas pour ça qu'il faut l'utiliser puisqu'il y a toujours de grandes chances qu'un enum soit transformé en object "classique" dans la vie du produit/code et lorsque ça arrive, le compilateur ne dit jamais rien. Et donc un ou plusieurs bugs apparaîtront magiquement dans le code.


s'il n'y a pas de solution, c'est qu'il n'y a pas de problème... ou pas.

Hors ligne