2013-05-20 2 views
0

J'ai essayé de créer un programme qui vous permet de choisir un fichier, il lit et imprime les résultats sur ... Voilà ce que j'ai jusqu'à présentLecture d'un fichier après avoir appuyé sur un bouton

public class Main { 
    public static void main(String[] args) { 
     JFrame frame = new JFrame("Bebras braces matcher"); 
     JButton selectf = new JButton("Open file"); 
     selectf.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       String cmd = e.getActionCommand(); 
       if(cmd.equals("Open file")) { 
        JFileChooser chooser =new JFileChooser(); 
        FileFilter filefilter = new FileNameExtensionFilter("","txt"); 
        chooser.setFileFilter(filefilter); 
        int returnVal = chooser.showOpenDialog(chooser); 
        if(returnVal==JFileChooser.APPROVE_OPTION) { 
         FileName=chooser.getSelectedFile().getName(); 
         System.out.println(FileName);  
        } 
       } 
      } 
     }); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setSize(500,500); 
     frame.add(selectf); 
     frame.setVisible(true); 

    } 
    public static void countChar() throws FileNotFoundException { 
     Scanner scan = null; 
     try { 
      scan = new Scanner(new File(FileName)); 
     } 
     catch (FileNotFoundException e) { 
     } 
     while (scan.hasNext()) { 
      String character = scan.next(); 
      int index =0; 
      char close = '}'; 
      char open = '{'; 
      while(index<character.length()) { 

       if(character.charAt(index)==close){ 
        CloseCount++; 
       } 
       else if(character.charAt(index)==open) { 
        OpenCount++; 
       } 
       index++; 
      } 
     } 
     System.out.println("Opened: "+OpenCount+"Closed: "+CloseCount); 
    } 
    private static String FileName; 
    private static int CloseCount = 0; 
    private static int OpenCount = 0; 
    private static final long serialVersionUID = 7526472295622776147L; 
} 

Et ça marche bien, ne fait tout simplement pas ce qu'il faut ... Comment faire fonctionner "countChar"? Parce qu'il n'imprime pas ce que je devrais ..

J'ai oublié de mentionner, si je l'appelle après que j'imprime le nom des fichiers, je reçois cette erreur: "exception non gérée type FileNotFoundException", je sais vraiment moins sur ces choses ..

+2

Eh bien, que devrait faire CountChar? –

+0

et où l'appelez-vous? – hoaz

Répondre

1

Vous êtes presque là! Vous imprimez simplement le nom de fichier au lieu d'appeler cette méthode.

Voir ceci?

if(returnVal==JFileChooser.APPROVE_OPTION) { 
    FileName=chooser.getSelectedFile().getName(); 
    System.out.println(FileName);  
} 

au lieu de (ou avant ou après, si vous préférez) System.out.println(FileName);, vient de mettre countChar();.

+0

Les champs statiques devraient être remplacés par des variables et des arguments locaux, cependant. –

+0

Absolument, et il y a quelques autres problèmes de style. Mais ils sont hors de notre portée aujourd'hui. C'est la réponse à la question. – Etaoin

+0

J'ai oublié de dire que je l'ai essayé. Je reçois une erreur: "Exception non gérée type FileNotFoundException" .. Comme, je ne peux pas être trouvé parce que l'utilisateur le spécifie! – Bebras

0

Vous venez d'attribuer un nom de fichier dans FileName au lieu du chemin du fichier. si vous utilisez cette

if(returnVal==JFileChooser.APPROVE_OPTION) { 
FileName=chooser.getSelectedFile().getAbsolutePath(); 
countChar(); 

parce que si le fichier est dans le même répertoire où votre projet est un travail alors, mais lorsque le fichier sélectionné résident dans différents endroits alors besoin d'utiliser AbsolutePath de fichier sélectionné.

Questions connexes