[java]Exception in thread "main"

Résolu/Fermé
domxaline - Modifié par domxaline le 11/02/2013 à 22:40
 domxaline - 12 févr. 2013 à 18:10
Bonjour,
en compilant mon prg,j'ai un erreur message suivante:
Enter code number
1001
Enter number of items
193
Enter cost
452
Exception in thread "main" java.io.EOFException
at java.io.DataInputStream.readFully(DataInputStream.java:197)
at java.io.DataInputStream.readLong(DataInputStream.java:416)
at java.io.DataInputStream.readDouble(DataInputStream.java:468)
at Inventory.main(Inventory.java:37)

import java.util.* 
import java.io.*; 
public class Inventory  
{ 
 static DataInputStream din=new DataInputStream(System.in); 
 static StringTokenizer st; 
  
 public static void main(String[]args)throws IOException 
 { 
  DataOutputStream dos=new DataOutputStream (new FileOutputStream("invent.dat")); 
   
   
  System.out.println("Enter code number"); 
  st=new StringTokenizer(din.readLine()); 
  int code=Integer.parseInt(st.nextToken()); 
   
  System.out.println("Enter number of items"); 
  st=new StringTokenizer(din.readLine()); 
  int items=Integer.parseInt(st.nextToken()); 
   
  System.out.println("Enter cost"); 
  st=new StringTokenizer(din.readLine()); 
  double cost=new Double(st.nextToken()).doubleValue(); 
   
   
  dos.writeInt(code); 
  dos.write(items); 
  dos.writeDouble(cost); 
  dos.close(); 
   
   
  DataInputStream dis=new DataInputStream(new FileInputStream ("invent.dat")); 
  int codeNumber=dis.readInt(); 
  int totalItems=dis.readInt(); 
  double itemCost=dis.readDouble(); 
  double totalCost=totalItems*itemCost; 
  dis.close(); 
   
   
  System.out.println("Code Number:"+codeNumber); 
  System.out.println("Item Cost:"+itemCost); 
  System.out.println("Total Items:"+totalItems); 
  System.out.println("Total Cost"+totalCost); 
 } 
} 

veuillez m'aidez svp

2 réponses

KX
Messages postés
16584
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
12 août 2022
2 972
11 févr. 2013 à 23:36
Il faut être cohérent dans le format de fichier !
Tu as "dos.write(items);" et "totalItems=dis.readInt();" qui ne correspondent pas.
Il faudrait plutôt écrire dos.writeInt(items);

PS : DataInputStream(System.in) c'est suspect, ajouté à ça le StringTokenizer et ça devient carrément moche ! Utilises plutôt la classe Scanner. Exemple :

private static Scanner clavier = new Scanner(System.in);

System.out.print("Enter code number : ");
int code = clavier.nextInt();

...
0
merci beaucoup,je l'ai corrigé
0