Must be caught java error debutant

Résolu
findizy Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   -  
findizy Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je suis débutant en java. Je voudrais faire un programme qui compte le nombre de diviseurs entiers d'un nombre n (entier positif). Je teste les diviseurs dans cet ordre : n, n-1, ... jusqu'à 1.

A la compilation j'ai 1 erreur, je l'ai mise en gras/souligné en commentaires dans mon code
Merci d'avance.

Voici mon code:

import objetMathematique.*;
import ordinateur.*;


class exind4_103

{

public static int compterDiviseursEntiers( int i, int j )
	{
	
	int n = 0;
	j = n;
	int m;
	for(i = 0; n != 1; m = n / j)
		{
			if(n % j == 0)
			{ 
			i = i + 1;
			j = n - 1;
			}
			else
			{ 
			j = n - 1;		
			}	
		}
	return i;
	}

public static void main( String [] args )
	{
	int i = 0;
	int j = 0;
	int m = 0;
	int n;
	System.out.println("Veullez entrer la valeur de n desiree.");
	n = System.in.read();                // unreported exception java.io.IOException; must be caught or declared to be trown //
	compterDiviseursEntiers(i,j);
	System.out.println("Voici le nombre de diviseurs entiers du nombre n choisi"+i);
	}
}
A voir également:

18 réponses

Dynamix Messages postés 202 Date d'inscription   Statut Membre Dernière intervention   76
 
Et avec la classe Scanner?

Scaner entree = new (System.in);
System.out.println("Veullez entrer la valeur de n desiree.");
n = entree.nextInt();


Sinon essaye d'attraper l'exception :

try {
n = System.in.read();
} catch (IOException e) { }
0
findizy Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   1
 
avec try/catch ca compile mais quand j'execute, apres avoir entrer la valeur de n, plus rien ne se passe.

Je me demande si il n'y a pas une erreur dans mon code...

merci d'avance
0
Dynamix Messages postés 202 Date d'inscription   Statut Membre Dernière intervention   76
 
T'as essayé avec la classe Scanner?
0
findizy Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   1
 
Eh bien je suis censé utilisé uniquement les outils vu pendant mon cours d'algorithmique. je n'ai vu ni Try/Catch, ni la classe scanner.

Donc je voudrais savoir si en modifiant mon code, je peux contourner l'exeption et ainsi ne plus devoir utiliser try/catch ou bien scanner...

C'est un peu compliqué mais j'espere que je suis clair... :S

merci d'avance
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Dynamix Messages postés 202 Date d'inscription   Statut Membre Dernière intervention   76
 
Est-ce que ça serait lié à ta classe ordinateur?
0
findizy Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   1
 
oui c'est possible, on a déja utiliser cette classe pour faire des trucs du genre:

clavier.lireSuiteDeChiffres ou des trucs comme ca ...

on a vu system.out.print donc pour lire un int j'ai utiliser system.in.read ...
0
Dynamix Messages postés 202 Date d'inscription   Statut Membre Dernière intervention   76
 
Tu peux copier la source de la classe ordinateur?
0
findizy Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   1
 
ya du nouveau : en fait je peux utiliser : clavier.lireUnInt();

mais mon programme s'arrete toujours un fois que j'ai entrer ma valeur pour n.

le nouveau code:

import objetMathematique.*;
import ordinateur.*;


class exind4_103

{

public static int compterDiviseursEntiers( int i, int j ) 
	{
	int n = 0;
	int m = 0;
	
	for(i = 0; n != 1; m = n % j)
		{
			
			if(m == 0)
			{ 
			i = i + 1;
			j = n - 1;
			}
			else
			{ 
			j = n - 1;		
			}	
		}
	return i;
	}

public static void main( String [] args )
	{
	int i = 0;
	int j = 0;
	int n;	
	System.out.println("Veullez entrer la valeur de n desiree.");
	n = clavier.lireUnInt();
	compterDiviseursEntiers(i,j);
	System.out.println("Voici le nombre de diviseurs entiers du nombre n choisi"+i);
	}
}
0
Dynamix Messages postés 202 Date d'inscription   Statut Membre Dernière intervention   76
 
Il faudrait toujours le code source où t'as écrit lireUnInt le problème vient sûrement de là.
0
findizy Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   1
 
comment je peux trouver ce code source ?
c'est dans le .jar ?
0
Dynamix Messages postés 202 Date d'inscription   Statut Membre Dernière intervention   76
 
Non normalement t'as un fichier ordinateur.java.
0
findizy Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   1
 
et il est cencé se trouver où se fichier? moi je ne l'ai pas créer et je ne le trouve pas en faisant une recherche.

En fait notre prof nous a donner un ficher .jar avec les classes qu'on aurait besoin pour faire nos programmes...
0
Dynamix Messages postés 202 Date d'inscription   Statut Membre Dernière intervention   76
 
Y aura pas une boucle infinie dans compterDiviseursEntiers par hasard?
Ton algorithme me semble bizarre, essaye en mettant un System.out.print dans le for.
0
findizy Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   1
 
bien vu ... j'ai fait un system.out.print("test");
=> boucle infinie....

Comment je peux arranger ca ?

je veux que tant que j est différent de 1, si n modulo j vaut 0 on ajoute 1 a i (qui est le nombre de diviseurs entiers) et puis on enleve 1 à j.
Sinon on enleve juste 1 à j et on recommence.

J'ai surement du me planter quelque part dans mon code.
0
Dynamix Messages postés 202 Date d'inscription   Statut Membre Dernière intervention   76
 
int n = 0;
Déjà là il y a un problème, ton résultat dépend de n et tu initialises une variable n à 0 qui, en plus, n'est pas la même.

compteurDiviseur(int n) {

int compteur = 0; // Le compteur des diviseurs
for(int i=n, i>1, i--) {
if(n%i == 0) {
compteur++;
}
}
return compteur;

}
Essaye quelque chose chose comme ça.
0
findizy Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   1
 
Ca fonctionne, merci beaucoup.
C'est toujours la même chose avec moi... je pars dans un truc trop compliqué et donc je fais des fautes, Alors que la solution est plus facile...

Merci beaucoup en tout cas.
0
Dynamix Messages postés 202 Date d'inscription   Statut Membre Dernière intervention   76
 
La conception c'est toujours ce qu'il y a de plus important. Toujours réfléchir à fond avant de se lancer dans le codage, ne pas hésiter à faire des dessins etc...

Derien, content de t'avoir aidé ;)
0
findizy Messages postés 65 Date d'inscription   Statut Membre Dernière intervention   1
 
J'y penserai pour la prochaine fois... je me suis peut etre lancé trop vite dans l'aventure^^

Merci encore pour ton aide précieuse.

Je classe le sujet comme résolu.

au revoir
0