Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Γεια σας,

Μήπως ξέρει κανείς με ποια συνάρτηση μπορώ να διαβάζω ακεραίους (έναν-έναν) ή έστω χαρακτήρες μέχρι να βρίσκω κενή σειρά σε ένα αρχείο txt?

Το μόνο που κατάφερα να βρω στο google είναι να διαβάζω μία σειρά ολόκληρη κ να την αποθηκεύω σε String πράγμα που δεν με βολεύει και πολύ για αυτό που θέλω να κάνω.

Ευχαριστώ για το χρόνο σας.

Δημοσ. (επεξεργασμένο)

Μπορείς να χρησιμοποιήσεις την κλάση Scanner και τις μεθόδους hasNextInt() και nextInt().

 

Πολύ καλό αυτό με τη Scanner αλλά πώς θα καταλαβαίνω κάθε φορά ότι στο αρχείο αλλάζω γραμμή ή ότι υπάρχει κενή γραμμή?

 

πχ θέλω να διαβάσω το αρχείο

 

3 7

 

1 2 3 4 5

6 7 8 9 9

 

2 4 5

5 5 5

5 5

5 5 5

 

κάθε γραμμή έχει διαφορετική σημασία για τα δεδομένα του προγράμματος.

Το ψαξα παραπάνω και βρήκα κατι για χρήση delimiter

αλλά δεν κατάλαβα και πολλα :(

Επεξ/σία από pbp
Δημοσ.

Ναι για να χρησιμοποιήσεις αυτή τη μέθοδο θα πρέπει να γνωρίζεις λίγο από regular expressions (ή πιο απλά regex). Επειδή από ότι καταλαβαίνω κάθε σειρά μπορεί να έχει διαφορετική μορφή (άλλη έχει δυο ψηφία, άλλη έχει 3, άλλη είναι κενή κλπ), για να μην μπλέξεις με regex (αν ασχοληθείς όμως έστω και λίγο σοβαρά με προγραμματισμό θα σου είναι πολύ χρήσιμο να τα μάθεις) μπορούμε να κάνουμε το εξής:

 

>public static void main(String[] args) throws Exception {
       BufferedReader r = new BufferedReader(new FileReader("/**Put file location here**/"));
       String line = "";
       Scanner s = null;
       while ((line = r.readLine()) != null) {
           if (line.trim().isEmpty()) {
               continue;
           }
           s = new Scanner(line);
           while (s.hasNextInt()) {
               System.out.print(s.nextInt() + " ");
           }
           System.out.println();
       }
   }

 

Στην ουσία ο παραπάνω κώδικας διαβάζει μια μια κάθε γραμμή ενός αρχείου και σε κάθε γραμμή δημιουργούμε ένα Scanner, με το οποίο διαβάζουμε τους integers που θέλουμε. Χρησιμοποιούμε τις μεθόδους που σου ανέφερα πιο πάνω (hasNextInt και nextInt) αλλά και τη μέθοδο readLine από την κλάση BufferedReader, η οποία είναι πολύ χρήσιμη για τέτοιου είδους εργασίες. Κοίταξέ τα και αν δυσκολευτείς κάπου, πες μας.

Δημοσ.

Ναι για να χρησιμοποιήσεις αυτή τη μέθοδο θα πρέπει να γνωρίζεις λίγο από regular expressions (ή πιο απλά regex). Επειδή από ότι καταλαβαίνω κάθε σειρά μπορεί να έχει διαφορετική μορφή (άλλη έχει δυο ψηφία, άλλη έχει 3, άλλη είναι κενή κλπ), για να μην μπλέξεις με regex (αν ασχοληθείς όμως έστω και λίγο σοβαρά με προγραμματισμό θα σου είναι πολύ χρήσιμο να τα μάθεις) μπορούμε να κάνουμε το εξής:

 

>public static void main(String[] args) throws Exception {
       BufferedReader r = new BufferedReader(new FileReader("/**Put file location here**/"));
       String line = "";
       Scanner s = null;
       while ((line = r.readLine()) != null) {
           if (line.trim().isEmpty()) {
               continue;
           }
           s = new Scanner(line);
           while (s.hasNextInt()) {
               System.out.print(s.nextInt() + " ");
           }
           System.out.println();
       }
   }

 

Στην ουσία ο παραπάνω κώδικας διαβάζει μια μια κάθε γραμμή ενός αρχείου και σε κάθε γραμμή δημιουργούμε ένα Scanner, με το οποίο διαβάζουμε τους integers που θέλουμε. Χρησιμοποιούμε τις μεθόδους που σου ανέφερα πιο πάνω (hasNextInt και nextInt) αλλά και τη μέθοδο readLine από την κλάση BufferedReader, η οποία είναι πολύ χρήσιμη για τέτοιου είδους εργασίες. Κοίταξέ τα και αν δυσκολευτείς κάπου, πες μας.

 

Σε ευχαριστώ πάρα πολύ φίλε μου.

Τα κατάφερα χάρις τη βοήθεια σου :)

Να σαι καλά!

Δημοσ.

Χαίρομαι που σε βοήθησα και το βρήκες. Άντε, σειρά έχει τώρα να μάθεις regex!! :lol: ^_^

 

Κανονικές εκφράσεις ξέρω από το πανεπιστήμιο :)

Απλά δεν έχω ιδέα πως μπορώ να χρησιμοποιήσω τις γνώσεις μου αυτές σε JAVA :/

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...