2009-03-22 6 views
0

J'ai mis peu d'éléments dans le tableau (par exemple 5 éléments) Le premier élément, l'index [0] de la matrice sera automatiquement affiché sans que l'utilisateur doive cliquer sur le bouton. Après avoir cliqué sur le bouton, les éléments suivants du tableau seront imprimés et les processus continueront jusqu'au dernier élément du tableau. Chaque fois que le bouton est cliqué, un fichier sera écrit sur le fichier txt.Problèmes de tableau Java

Mon problème ici était, il y a par exemple. 5 éléments de tableau (affiché avec succès lorsque le bouton a cliqué), mais seulement quatre fichiers écrits sur le fichier txt. Comment faire cinq ... HELPPP ... Im dans un cul :-(

public class mainFrame extends JFrame implements ActionListener { 
    ........ 
    private JButton answer1 = new JButton(); 
    String [] a = {"a","b","c","d","e"} 
    in fileNumber = 0; 
    } 

public mainFramme(){ 
    System.out.println(a.get(fileNumber)) 
    fileNumber++; 
    answer1.addActionListener(this); 
    } 

public void actionPerformed(ActionEvent e) {  
    if (e.getSource==answer1) { 
     System.out.println(a.get(fileNumber)) 
     try { 
     ..... 
     fout = new FileOutputStream ("myfile.txt",true); 
     Filename = new File(files.get(fileNumber));  
     new PrintStream(fout).println (Filename); 
     new PrintStream(fout).println ("Answer 1"); 
     fileNumber++;  
     } 
     ... 
    } 

}

+0

Quand vous posez une question sur Java, s'il vous plaît utiliser une balise « java » pour refléter cette réalité. –

+0

Je suis tellement désolé, je ne l'ai pas réalisé. Je le referai certainement la prochaine fois. Merci. – Jessy

Répondre

0

D'autres ont déjà répondu, mais je ne pense pas que ce soit clair. Vous affichez automatiquement la première chaîne à l'écran, mais pas dans un fichier. Il serait préférable de déplacer les opérations de fichiers hors de la méthode actionPerformed(). De la façon dont vous l'avez écrit, les opérations sur les fichiers ne sont appelées que lorsque le bouton est enfoncé, ce qui n'est jamais le cas pour la première chaîne.

Cela pourrait être plus clair:

public class mainFrame extends JFrame implements ActionListener { 
    ........ 
    private JButton answer1 = new JButton(); 
    String [] a = {"a","b","c","d","e"} 
    in fileNumber = 0; 
} 

public mainFrame(){ 
    nextString(); 
    answer1.addActionListener(this); 
} 

public void actionPerformed(ActionEvent e) {  
    if (e.getSource==answer1) nextString(); 
} 

private void nextString() { 
    try { 
     ..... 
     System.out.println(a.get(fileNumber)) 
     fout = new FileOutputStream ("myfile.txt",true); 
     Filename = new File(files.get(fileNumber));  
     new PrintStream(fout).println (Filename); 
     new PrintStream(fout).println ("Answer 1"); 
     fileNumber++;  
    } 
    ... 
} 
+0

Cher Marty Lamb, merci pour l'idée ... mais je n'arrive toujours pas à résoudre mon problème.Quand j'ai cliqué sur le bouton, le fichier écrit sur le fichier actua en fonction de la valeur du bouton (réponse 1). Si j'écris le fichier sur le premier affichage sans cliquer sur le bouton, il ne sera pas valide pour mon programme. – Jessy

+0

par exemple. le premier écran n'aura pas de réponse car aucun bouton n'a cliqué. – Jessy

+0

Ensuite, je suis confus. S'il n'est pas valide d'écrire le fichier lorsque vous affichez la première chaîne (sans appuyer sur le bouton), pourquoi attendez-vous cinq fichiers? –

0

Dans le constructeur, où vous avez

System.out.println(a.get(fileNumber)) 
fileNumber++; 

Il semble me Comme si vous imprimiez une chaîne à stdout (c'est-à-dire l'écran) sans l'écrire dans le fichier, je parie que c'est pour cela qu'il manque un des éléments du tableau dans le fichier:

+0

Cher David, Il était parce que, fichier seulement écrit sur le fichier txt lorsque le bouton a cliqué. mmm..il était comme..la première question affichée, et quand l'utilisateur répond (bouton cliqué-réponse enregistrée sur le fichier txt), la question suivante sera affichée ... – Jessy

+0

Cont..Si je n'ai pas mis .. numéro de fichier ++; après le premier affichage, lorsque le bouton a cliqué, il pointera sur le même par ex. index [0]. – Jessy

+0

Si je vous comprends bien (ce qui est un peu difficile, pour être honnête), c'est exactement ce que je voulais dire ... –

0

ve créer d votre premier fichier (pour le 0ème élément). Cela conduit aux 4 fichiers, à savoir pour les éléments dans les index 1-4. Le 0ème fichier n'est pas créé.

+0

Je dois faire l'incrément de sorte que lorsque l'utilisateur clique le bouton affichera automatiquement les éléments suivants – Jessy

+0

Oui, mais lorsque vous affichez le premier élément, vous ne l'écrivez pas dans le fichier –

1

Votre problème se trouve ici:

public mainFramme(){ 
    System.out.println(a.get(fileNumber)) 
    fileNumber++ 
    answer1.addActionListener(this); 
    } 

Vous incrémenter FileNumber avant que le bouton est pressé il est égal à 1. Les tableaux sont indexés de 0 à Java, ce qui signifie pour obtenir le premier élément du tableau que vous utilisez tableau [0] - Voyant que fileNumber sera égal à 1, vous obtiendrez l'élément deuxième du tableau - manquant ainsi le premier.

EDIT EN RAISON DE COMMENTAIRE:

Ok, alors appelez-vous les méthodes flush() et close() sur le flux de sortie de fichier? «flush» garantit que toutes les données du flux sont écrites avant d'être fermées. Cela peut être utile si vous publiez toute votre méthode actionPerformed.

Une partie du code affiché en aucun idéal soit (à savoir les nouveautés PrintStream)

Peut-être que cela pourrait aider:

public void actionPerformed(ActionEvent e) { 
    if(e.getSource() == answer1) { 
     try { 
      PrintWriter output = new PrintWriter(new FileOutputStream(fileName.txt)); 

      // Write stuff to file using output.printLn(); 
      output.flush(); 
      output.close(); 
     }catch (IOException e) { // exception handling } 
    } 
} 
+0

Je me suis rendu compte que mais, mon intention était en fait d'écrire un fichier sur le fichier txt chaque fois qu'un bouton cliquait – Jessy

0

Il vous manque un tas de points-virgules - je ne sais pas si cela provoque le problème (ne devrait même pas courir)

Assurez-vous que chaque ligne qui a besoin de points-virgules l'a.

+0

Cher zPesk, merci de me signaler que ... mais en fait mon vrai programme fonctionne, juste un clic sur le bouton. le problème de tableau ... – Jessy

Questions connexes