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

προβλημα με περασμα παραμετρων απο αρχειο txt σε java


ColdFusion

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

Λοιπον εχω την εξης ερωτηση.

 

Εχω ενα αρχειο text που περιεχει πληροφοριες για  ατομα (ονομα ,ημερομηνια εισοδου,ωρα  ,ημερομηνια εξοδου,ωρα)

 

Θελω να διαβασω το αρχειο και στην συνεχεια να περασω τα στοιχεια του στο προγραμμα μου. Τα στοιχεια αυτα θελω να τα κανω split ωστε να υπολογισω την ωρα που το ατομο ηταν στο χωρο.

 

Για το διαβασμα του αρχειου

 

import java.io.*;
public class Test {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
    
    try{
  // Open the file that is the first 
  // command line parameter
  FileInputStream fstream = new FileInputStream("test.txt");
  // Get the object of DataInputStream
  DataInputStream in = new DataInputStream(fstream);
  BufferedReader br = new BufferedReader(new InputStreamReader(in));
  String strLine;
  //Read File Line By Line
  while ((strLine = br.readLine()) != null)   {
  // Print the content on the console
  System.out.println (strLine);
  }
  //Close the input stream
  in.close();
    }catch (Exception e){//Catch exception if any
  System.err.println("Error: " + e.getMessage());
  }

 

 

Το προβλημα μου ειναι οτι αφου διαβασω το αρχειο πως περναω τα στοιχεια του αρχειου ενα ενα ???

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Εννοεί προφανώς πως παίρνει τα tokens απο κάθε γραμμή.

Εκεί θα χρησιμοποιήσεις την κλάση Scanner me argument to strLine. Scanner sc = new Scanner(strLine);

Μετά με sc.next(); διαβάζεις το string μέχρι το επόμενο κενό (νομίζω ισχύει και για . , ; κτλ αλλα δεν είμαι σίγουρος). To επόμενο sc.next(); θα διαβάσει απο εκεί που σταμάτησε μέχρι το επόμενο κενο κτλ.

Όπως τα διαβάζεις θα τα αποθηκεύεις σε κάποια Δομή π.χ. ArrayList ανάλογα τι σε βολεύει να κάνεις.

 

Εσύ αυτή τη στιγμή ναι μεν διαβάζεις γραμμή γραμμή αλλά απλά κάνεις print. Προφανώς θα πρέπει μέσα στη while να γίνει η δουλεία με τον Scanner σε ένα inner loop.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Χρησιμοποιήσε την StringTokenizer κάπως έτσι :

 

 

 

BufferedReader f = new BufferedReader(new FileReader("test.in"));
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("test.out")));
StringTokenizer st = new StringTokenizer(f.readLine());

int i1 = Integer.parseInt(st.nextToken());
int i2 = Integer.parseInt(st.nextToken());

 

 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Χρησιμοποιήσε την StringTokenizer κάπως έτσι :

 

 

 

BufferedReader f = new BufferedReader(new FileReader("test.in"));
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("test.out")));
StringTokenizer st = new StringTokenizer(f.readLine());

int i1 = Integer.parseInt(st.nextToken());
int i2 = Integer.parseInt(st.nextToken());

 

 

 Φίλε αν θες επειδή είχα το ίδιο ερώτημα με το θεματοθέτη,τι κάνει το

Integer.parseInt(st.nextToken());

Γιατί να έχω μεταβλητή Int? Τι αποθηκεύω;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

όταν διαβάζεις απο αρχείο όλα σου έρχονται σε String μορφή.

 

η st.nextToken παίρνει το επόμενο token απο την γραμμή που διαβάζει.

Αν θες να επεξεργαστείς το επόμενο token σαν integer, πρέπει να το κάνεις cast (το string) σε integer.

Το έβαλα απλά για να δείτε πως γίνεται..

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

όταν διαβάζεις απο αρχείο όλα σου έρχονται σε String μορφή.

 

η st.nextToken παίρνει το επόμενο token απο την γραμμή που διαβάζει.

Αν θες να επεξεργαστείς το επόμενο token σαν integer, πρέπει να το κάνεις cast (το string) σε integer.

Το έβαλα απλά για να δείτε πως γίνεται..

 

Τσου,δεν το κατάλαβα... :wacko:

 

Γιατί ένα string να το κάνεις int? Εκτός και αν ξέρεις σίγουρα ότι θα είναι αριθμός int.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

όταν διαβάζεις απο αρχείο όλα σου έρχονται σε String μορφή.

 

η st.nextToken παίρνει το επόμενο token απο την γραμμή που διαβάζει.

Αν θες να επεξεργαστείς το επόμενο token σαν integer, πρέπει να το κάνεις cast (το string) σε integer.

Το έβαλα απλά για να δείτε πως γίνεται..

Άλλο cast κι αλλο parse...

Cast είναι το:

int a = (int) anObject;

Τσου,δεν το κατάλαβα... :wacko:

 

Γιατί ένα string να το κάνεις int? (1)

Εκτός και αν ξέρεις σίγουρα ότι θα είναι αριθμός int.(2)

Αν θες πχ να βρεις το γινόμενο κάποιον αριθμών οι οποίο είναι γραμμένοι σ ένα αρχείο. Τι θα κανείς;; (1)

 

Εννοείτε πως ξέρεις ότι το String αναπαριστά ακέραιο, ειδάλλως θα βάλεις το parseInt ανάμεσα σε try-clause για να αποφύγεις το boom (2)

 

 

Βέβαια υπάρχει και η κλάση scanner η οποία πιστεύω είναι πολύ πιο εύχρηστη

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

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

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

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

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

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

Σύνδεση

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

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