<java>Exception in thread "main" j

Fermé
domxaline - 10 févr. 2010 à 13:13
 domxaline - 12 févr. 2010 à 17:32
Bonjour,
j'ai essayé le prg suivant:
package exercice;
import exercice.Clavier;
public class premier 
{
	public static void main(String[]args)
	{
		int i,n = 0,som;
		som=0;
		for(i=0;i<4;i++)
		{
			System.out.println("donnez un entier");
			
			n=Clavier.lireInt();
			som+=n;		
		}	
		System.out.println("Somme:"+som);
	}
}


import java.io.* ;
public class Clavier
{ 
	public static String lireString () // lecture d’une chaine
    { 
		String ligne_lue = null ;
try
   { 
    InputStreamReader lecteur = new InputStreamReader (System.in) ;
    BufferedReader entree = new BufferedReader (lecteur) ;
    ligne_lue = entree.readLine() ;
   }
   catch (IOException err)
   { 
	   System.exit(0) ;
   }
   return ligne_lue ;
}
//Annexe D
//La classe Clavier
public static float lireFloat () // lecture d’un float
{ 
	float x=0 ; // valeur a lire
    try
    { 
      String ligne_lue = lireString() ;
      x = Float.parseFloat(ligne_lue) ;
    }
    catch (NumberFormatException err)
    { 
     System.out.println ("*** Erreur de donnee ***") ;
     System.exit(0) ;
    }
    return x ;
}
public static double lireDouble () // lecture d’un double
{ 
	double x=0 ; // valeur a lire
    try
    { 
     String ligne_lue = lireString() ;
     x = Double.parseDouble(ligne_lue) ;
    }
    catch (NumberFormatException err)
    { 
   System.out.println ("*** Erreur de donnee ***") ;
   System.exit(0) ;
}
return x ;
}

public static int lireInt () // lecture d’un int
{ 
	int n=0 ; // valeur a lire
try
{ 
	String ligne_lue = lireString() ;
n = Integer.parseInt(ligne_lue) ;
}
catch (NumberFormatException err)
{ System.out.println ("*** Erreur de donnee ***") ;
System.exit(0) ;
}
return n ;
}

// programme de test de la classe Clavier
public static void main (String[] args)
{ System.out.println ("donnez un flottant") ;
float x ;
x = Clavier.lireFloat() ;
System.out.println ("merci pour " + x) ;
System.out.println ("donnez un entier") ;
int n ;
n = Clavier.lireInt() ;
System.out.println ("merci pour " + n) ;
}
}

en compilant j'ai erreur suivante
Exception in thread "main" java.lang.Error: Unresolved compilation problem:

at exercice.Clavier.lireInt(Clavier.java:53)
at exercice.premier.main(premier.java:13)

la ligne Clavier.java:53 est
public static int lireInt () // lecture d’un int


la ligne premier.java:13 est
n=Clavier.lireInt();


aidez moi s'il vous plaît
A voir également:

8 réponses

Utilisateur anonyme
10 févr. 2010 à 14:49
Salut,

J'ai compilé les 2 sources:

-premier (ce serait mieux de la nommer Premier) sans package exercice; et import exercice.Clavier;
-puis Clavier

Et ca fonctionne très bien.

Cordialement,

Dan
0
j'ai écris comme tu m'a dit
import exercice.Clavier;
public class Premier 
{
	public static void main(String[]args)
	{
		int i,n = 0,som;
		som=0;
		for(i=0;i<4;i++)
		{
			System.out.println("donnez un entier");
			
			n=Clavier.lireInt();
			som+=n;		
		}	
		System.out.println("Somme:"+som);
	}
}

maintenant j'ai erreur suivant:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:

at exercice.Premier.main(Premier.java:5)

la ligne 5 est:
public static void main(String[]args)
0
Utilisateur anonyme
10 févr. 2010 à 21:06
Sans l'import exercice.Clavier non plus.

a+

Dan
0
j'enlevais import exercice.Clavier toujours fait même erreur

Exception in thread "main" java.lang.Error: Unresolved compilation problem:
at exercice.Premier.main(Premier.java:5)

//package exercice;
//import exercice.Clavier;
public class Premier 
{
	public static void main(String[]args)
	{
		int i,n = 0,som;
		som=0;
		for(i=0;i<4;i++)
		{
			System.out.println("donnez un entier");
			
			n=Clavier.lireInt();
			som+=n;		
		}	
		System.out.println("Somme:"+som);
	}
}

merci de m'aider
0

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

Posez votre question
Utilisateur anonyme
11 févr. 2010 à 13:35
RE,

J'ai de nouveau copié/coller les 2 classes (Premier et clavier) que j'avais déjà supprimées.

J'ai compilé ces 2 classes(séparément), testé les 2 et tout est ok.

Vérifie bien que Clavier est bien sans la partie Premier comme ceci:

import java.io.* ;
public class Clavier
{ 
	public static String lireString () // lecture d’une chaine
    { 
		String ligne_lue = null ;
try
   { 
    InputStreamReader lecteur = new InputStreamReader (System.in) ;
    BufferedReader entree = new BufferedReader (lecteur) ;
    ligne_lue = entree.readLine() ;
   }
   catch (IOException err)
   { 
	   System.exit(0) ;
   }
   return ligne_lue ;
}
//Annexe D
//La classe Clavier
public static float lireFloat () // lecture d’un float
{ 
	float x=0 ; // valeur a lire
    try
    { 
      String ligne_lue = lireString() ;
      x = Float.parseFloat(ligne_lue) ;
    }
    catch (NumberFormatException err)
    { 
     System.out.println ("*** Erreur de donnee ***") ;
     System.exit(0) ;
    }
    return x ;
}
public static double lireDouble () // lecture d’un double
{ 
	double x=0 ; // valeur a lire
    try
    { 
     String ligne_lue = lireString() ;
     x = Double.parseDouble(ligne_lue) ;
    }
    catch (NumberFormatException err)
    { 
   System.out.println ("*** Erreur de donnee ***") ;
   System.exit(0) ;
}
return x ;
}

public static int lireInt () // lecture d’un int
{ 
	int n=0 ; // valeur a lire
try
{ 
	String ligne_lue = lireString() ;
n = Integer.parseInt(ligne_lue) ;
}
catch (NumberFormatException err)
{ System.out.println ("*** Erreur de donnee ***") ;
System.exit(0) ;
}
return n ;
}

// programme de test de la classe Clavier
public static void main (String[] args)
{ System.out.println ("donnez un flottant") ;
float x ;
x = Clavier.lireFloat() ;
System.out.println ("merci pour " + x) ;
System.out.println ("donnez un entier") ;
int n ;
n = Clavier.lireInt() ;
System.out.println ("merci pour " + n) ;
}
}



Dan
0
scriptiz Messages postés 1424 Date d'inscription dimanche 21 décembre 2008 Statut Membre Dernière intervention 14 septembre 2023 425
11 févr. 2010 à 14:17
1) Dans la déclaration de ta méthode main met un espace entre String[] et args.
2) La classe Clavier est obsolète depuis quelques temps, je te conseille plutôt d'utiliser un Scanner.
3) Voici un corriger de ton exercice qui fonctionne très bien sans la classe Clavier :

import java.util.Scanner;

public class Premier 
{
	public static Scanner sc = new Scanner(System.in);
	
	public static void main(String[] args)
	{
		int somme = 0;
		for(int i = 0; i < 4; i++)
		{
			System.out.print("Donnez un entier : ");
			
			int n = sc.nextInt();
			somme += n;		
		}	
		System.out.println("Somme = " + somme);
	}
}
0
latoopa Messages postés 258 Date d'inscription dimanche 11 octobre 2009 Statut Membre Dernière intervention 5 janvier 2012 32
11 févr. 2010 à 15:37
public static void main(String[]args)


Effectivement, il manque un epace entre String[] et args ! (ou bien String et args[], vive le java!)
0
Utilisateur anonyme
11 févr. 2010 à 16:51
C'est vraiment nimporte quoi:
On peut écrire main(String[]args) ou main(String[] args) et pourquoi pas main(String[] args) et aussi main(String[] toto).

Une autre forme d'écriture: main(String args[]) cette fois exige l'espace entre String et args et là on peut aussi écrire:
main(String args[]) ou main(String toto[])

C'est la (les) syntaxe(s) pour déclarer un tableau: type[] nom; ou type nom[];

Dan
0
comment tu m'a dit;avec le scanner marche bien
mais avec clavier marche pas
0
domxaline > domxaline
12 févr. 2010 à 00:22
il y a un erreur dans mon message le 11 fév 2010 à 19:59:31
je le corrige:
Comme tu m'a dit;j'ai écris avec le scanner et il marche bien
mais avec clavier marche pas!!
0
ça y est, j'ai résolu le pb,en fermant tous les package et j'ai supprimé les class clavier et premier
ensuite je les réécris, maintenant ça marche
0