2010-11-13 29 views
1

Je dois rechercher la première ligne d'un fichier texte pour deux valeurs Int qui seront les dimensions d'un tableau 2D. Voici ce que j'ai jusqu'ici ... Merci!Comment numériser la première ligne d'un fichier texte pour deux entiers, en omettant les chaînes?

try { 
     Scanner scan = new Scanner(f); 
      int rows = scan.nextInt(); 
      int columns = scan.nextInt(); 
     String [][] maze = new String[rows][columns]; 
    } 
+0

Etes-vous obligé d'utiliser 'Scanner'? –

+0

Non, c'était ma préférence personnelle. –

+0

Utilisez une [expression régulière] (http://download.oracle.com/javase/6/docs/api/java/util/regex/package-summary.html) – khachik

Répondre

0

Une autre façon:

// read your file 
File f = new File("file.txt"); 

// make sure your file really exists 
if(f.exists()) { 

    // a buffered reader is standard for reading files in Java 
    BufferedReader bfr = new BufferedReader(new FileReader(f)); 

    // read the first line, that's what you need 
    String line = bfr.readLine(); 

    // assuming your integers are separated with a whitespace, use this splitter 
    // if they're separated with a comma, the use line.split(","); 
    String[] integers = line.split(" "); 

    // get the first integer 
    int i1 = Integer.valueOf(integers[0]); 

    // get the second integer 
    int i2 = Integer.valueOf(integers[1]); 

    System.out.println(i1); 
    System.out.println(i2); 

    // finally, close buffered reader to avoid any leaks 
    bfr.close(); 
} 

Je vais laisser l'exception traiter jusqu'à vous. Vous aurez des exceptions si votre fichier n'existe pas, ne peut pas être lu ou si les première et seconde parties de la première ligne ne sont pas des entiers. C'est bon s'ils sont négatifs.

Remarque: vous n'avez rien spécifié à propos de la première ligne. J'ai supposé dans ce code qu'ils sont au début, séparés par un espace.

Si ce n'est pas le cas, vous pouvez également utiliser le fractionnement des chaînes, mais vous devrez vérifier si chaque partie découpée peut être convertie en nombre entier. Si vous avez 3 entiers ou plus dans la première ligne, il y aura des ambiguïtés. Par conséquent, mes hypothèses.