Aller au contenu

Petite question de Java... (pour un gros néophyte)


Don_Angelo

Messages recommandés

Bonjour à tous,

En suivant les bons conseils que j'avais glanné sur l'Ancien Forum, j'ai décidé d'apprendre Java. Je mis suis mis sérieusement hier, donc je suis encore vraiment néophyte.

J'essaye d'écrire une classe toute bête qui est censée vérifier si un entier est premier ou pas.

J'ai donc pondu ce code:

public class Function
{
public static long Is_Premier(long nombre) // teste si l'entier est premier. doit retourner true si oui et son multiple si non
{
	int test;
	test=2;

	if (nombre%test==0) return 2;
	else
	{
		test++;
		while ((nombre%test!=0) && (test<=Math.sqrt(nombre)))
		{
			test=test+2;
		}
		if ((nombre%test)==0) return true;
		else return test;
	}
}
}

Le compilateur me dit qu'il y a une erreur de "types incompatibles" à la ligne 16 mais je ne comprends pas ce qu'il veut dire. Quelqu'un peut-il m'aider SVP? D'avance merci.

Lien à poster

Tu definis ta methode comme retournant un type "long" mais a la ligne 16 tu renvoies un boolean, donc forcement ca coince. Change public static long par public static boolean, et remplace le return 2 par return false et le return test de la fin par return false.

Ton commentaire au niveau de la methode est donc impossible a realiser. Tu pourrais au mieux retourner -1 si le nombre est premier ou son multiple s'il ne l'est pas (bien que je ne voie pas trop l'interet).

Note qu'en Java on commence toujours les noms de methodes par une minuscule par convention et qu'on ne met pas d'underscore. Tu devrais donc ecrire isPremier(). Tu peux aussi ecrire test += 2 au lieu de test = test + 2.

Lien à poster

Ah d'accord je croyais que dans public class long .... long indiquait le type de l'argument que reçoit la classe.

Maintenant ça marche au poil. Je vais également corriger les nom de classes.

Si j'ai bien compris les opérateurs de java sont les mêmes que PHP.

Merci pour tes indications.

Lien à poster

Note qu'en Java on commence toujours les noms de methodes par une minuscule par convention et qu'on ne met pas d'underscore. Tu devrais donc ecrire isPremier().

euh oui et mélanger français et anglais, dans le nom du fonction, ce n'est pas toujours du meilleur gout...

autant avoir des noms en français et en anglais pourquoi pas, de toute façon il y a les fonctions toString... mais bon là ce serait mieux de mettre estPremier() ou isPrime() :-)

Lien à poster

"Si j'ai bien compris les opérateurs de java sont les mêmes que PHP."

Non. Par exemple les operateurs ' J'ai fait exprès de mélanger pour pas mettre isPrime de peur que ça existe déja, et parce que estPremier était déja pris par une autre classe, et étant donné que je serais succeptible de les réutiliser toutes les deux dans le même programme je préferais prévoir.

Lien à poster

Hbomb : La je dois te contredire. Je n'aime pas ce melange en effet mais si tu veux coder en francais il faut conserver les prefixes comme is, can, get ou set car certaines API ou certains outils s'attendent a les trouver.

En plus les fonctions n'existent pas en Java :-)

Lien à poster
×
×
  • Créer...