Programme compile mais marche pas ! [JAVA] - Programmation
Marsh Posté le 11-02-2001 à 23:12:55
Dans ta boule while, tu devrais ajouter && (nbEl < MAX_SPECTACLES)
Marsh Posté le 11-02-2001 à 23:21:49
toujours même erreur mais ton idée est très bonne vais vérifier dans le reste du programme si y aurait pas le même genre de situation ailleurs...
d'autres idées?
Marsh Posté le 12-02-2001 à 23:29:34
Oui, à mon avis, c'est un peu bête de borner la taille de taon tableau ne sachant pas a priori le nombre d'entrées que tu vas avoir dedans...
Utilise un objet ArrayList à la place (tu trouveras cette classe dans le package java/util, comme toutes les autres collections standards). C'est une sorte de tableau à taille variable (pour simplifier). Et tu fais un monArrayList.add() à chaque fois que tu veux ajouter une entrée à la fin de la liste.
Marsh Posté le 11-02-2001 à 22:47:12
Voila merci a Verdoux pour m'avoir aider , maintenant j'ai complètement terminé, et la compilation passe mais après j'ai
droit a un bô :
java.lang.ArrayIndexOutOfBoundsException
at FenetreSpectacle.<init>(FenetreSpectacle.java:39)
at FenetreSpectacle.main(FenetreSpectacle.java:147)
En gros le programme est senser lire un fichier puis plasser l'information trouver dans des tableaux
puis une fenetre apparait demandant a l'utilisateur un numéro de spectacle ainsi que e nombre de billets voulu, puis toujours dans la même fenetre le nom du spectacle doit apparaître ainsi que le prix par billet et le total. quand l'utilisateur appui sur Terminer , il a droit au résultats de la journée avant que le programme se termine.
Voici mon programme :
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
public class FenetreSpectacle extends JFrame implements ActionListener
{
private final int MAX_SPECTACLES = 15;
private JLabel labelNoSpectacle, labelDescript, labelPrix,
labelNbBillet, labelTotal;
private JTextField champNoSpectacle, champDescript, champPrix,
champNbBillet, champTotal;
private JButton boutonTerminer, boutonInitialiser;
private int tabNoSpectacle[] = new int[MAX_SPECTACLES];
private String tabDescript[] = new String[MAX_SPECTACLES];
private double tabPrix[] = new double[MAX_SPECTACLES];
private int nbEl;
public FenetreSpectacle() throws IOException
{
super("Facturation de spectacle" );
int j;
BufferedReader fichier = new BufferedReader (new FileReader("a:spectacles.txt" ));
String ligne;
nbEl= 0 ;
ligne = fichier.readLine();
while (ligne != null)
{
tabNoSpectacle[nbEl] = Integer.parseInt(ligne.substring(0,5));
tabDescript[nbEl] = ligne.substring(6,26);
tabPrix[nbEl] = Double.parseDouble(ligne.substring(27));
nbEl += 1;
}
Container c = getContentPane();
c. setLayout(new GridLayout(6,2,6,6));
labelNoSpectacle = new JLabel("Numéro de spectacle : ",SwingConstants.RIGHT);
champNoSpectacle = new JTextField();
champNoSpectacle.addActionListener(this);
c.add(labelNoSpectacle);
c.add(champNoSpectacle);
labelDescript = new JLabel("Description : ", SwingConstants.RIGHT);
champDescript = new JTextField();
champDescript.setEditable(false);
c.add(labelDescript);
c.add(champDescript);
labelPrix = new JLabel("Prix : ", SwingConstants.RIGHT);
champPrix = new JTextField();
champPrix.setEditable(false);
c.add(labelPrix);
c.add(champPrix);
labelNbBillet = new JLabel("Nombre de billets : ",SwingConstants.RIGHT);
champNbBillet = new JTextField();
champNbBillet.addActionListener(this);
c.add(labelNbBillet);
c.add(champNbBillet);
labelTotal = new JLabel("Total : ", SwingConstants.RIGHT);
champTotal = new JTextField();
champTotal.setEditable(false);
c.add(labelTotal);
c.add(champTotal);
boutonTerminer = new JButton("Terminer" );
boutonTerminer.addActionListener(this);
c.add(boutonTerminer);
boutonInitialiser = new JButton("Initialiser" );
boutonInitialiser.addActionListener(this);
c.add(boutonInitialiser);
setLocation(200,200);
show();
}
public void actionPerformed(ActionEvent e)
{
int noSpectacle, nbBillet, posi;
double tabTotal[] = new double[nbEl];
String sortie ="";
posi = 0;
if (e.getSource() == champNoSpectacle)
{
noSpectacle = Integer.parseInt(champNoSpectacle.getText());
posi = Outil.rechercheBinaire(noSpectacle,tabNoSpectacle,nbEl);
if (posi == -1)
JOptionPane.showMessageDialog(null,"Numéro de spectacle inexistant!","ERREUR",
JOptionPane.ERROR_MESSAGE);
else
{
champDescript.setText(tabDescript[posi]);
champPrix.setText(Double.toString(tabPrix[posi]));
}
}
else if (e.getSource() == champNbBillet && champNoSpectacle != null)
{
nbBillet = Integer.parseInt(champNbBillet.getText());
tabTotal[posi] = nbBillet * tabPrix[posi];
champTotal.setText(Double.toString(tabTotal[posi]));
}
else if (e.getSource() == boutonTerminer)
{
sortie += "TITRE SPECTACLE\t\tTOTAL BILLETS";
for (int i = 0; i < nbEl; i++)
sortie += tabDescript[i] +"\t\t" + tabTotal[i] +"\n";
JTextArea aireSortie = new JTextArea(1,1);
aireSortie.setText(sortie);
JOptionPane.showMessageDialog(null, aireSortie,"Résultats de la journée",
JOptionPane.INFORMATION_MESSAGE);
System.exit(0);
}
else
{
champDescript.setText("" );
champTotal.setText("" );
champPrix.setText("" );
champNbBillet.setText("" );
champNoSpectacle.setText("" );
}
}
public static void main(String[] args) throws IOException
{
FenetreSpectacle fenetreSpectacle = new FenetreSpectacle();
fenetreSpectacle.addWindowListener
(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
} );
}
}