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

Java!!!αρχεία και πίνακες


maniac89

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

Δημοσ.

σας κάνω μία περίληψη της άσκησης:

έχω ένα αρχείο με ονόματα των αγοριών,διαβάζω κανονικά το αρχείο

αλλά δεν μπορώ να περάσω τα ονόματα σαν String σε πίνακα ώστε να τα επεξεργαστώ παρακάτω...παραθέτω τον κώδικα(το αρχείο boynames.txt περιέχει τα ονόματα των αγοριών)

import java.io.*;

public class exer3 {

 

/**

* @param args the command line arguments

*/

public static void main(String[] args) {

String fileName = "boynames.txt";

String str = "";

try {

FileInputStream fis = new FileInputStream(fileName);

while (fis.available()>0) {

str = str + (char)fis.read();

}

fis.close();

}

catch (IOException e) {

System.out.println(e.toString());

}

System.out.println("Filename is "+fileName);

System.out.println("File contains "+str);

 

}

 

}

Δημοσ.

Επειδή δεν ξέρεις από την αρχή που ξεκινάς να διαβάζεις το αρχείο το πλήθος των γραμμών είναι καλύτερο να το κάνεις με μία δομή όπως οι λίστες.

 

Αν δεν σε χαλάει αυτή η λύση τότε:

 

>
public static void main(String[] args) 
   {
       String fileName = "boynames.txt";
       String str = null;
       
       List<String> boys = new ArrayList<String>();
       
       try {
           
           BufferedReader bf = new BufferedReader(
                                       new InputStreamReader(
                                           new FileInputStream(fileName)));
           
           while ( (str = bf.readLine())!= null )
               boys.add(str);
           
           bf.close();
       }catch (IOException e) {}
       
       Iterator i = boys.iterator();
       
       while(i.hasNext())System.out.println(i.next().toString());
       
   }

Δημοσ.
Επειδή δεν ξέρεις από την αρχή που ξεκινάς να διαβάζεις το αρχείο το πλήθος των γραμμών είναι καλύτερο να το κάνεις με μία δομή όπως οι λίστες.

 

Αν δεν σε χαλάει αυτή η λύση τότε:

 

>
public static void main(String[] args) 
   {
       String fileName = "boynames.txt";
       String str = null;
       
       List<String> boys = new ArrayList<String>();
       
       try {
           
           BufferedReader bf = new BufferedReader(
                                       new InputStreamReader(
                                           new FileInputStream(fileName)));
           
           while ( (str = bf.readLine())!= null )
               boys.add(str);
           
           bf.close();
       }catch (IOException e) {}
       
       Iterator i = boys.iterator();
       
       while(i.hasNext())System.out.println(i.next().toString());
       
   }

 

thanks για την απάντηση!

γνωρίζω ότι το πλήθος των γραμμών που περιέχει το αρχείο είναι 1000!

oπότε αν μπορείς πες μου πως μπορώ να τα βάλω κατευθείαν σε πίνακα String?

Δημοσ.

Νομίζω πως είναι προφανές από τον παραπάνω κώδικα.

 

Τέλος πάντων....το ξαναγράφω.

 

>
String[] boys = new String[1000];
int counter = 0;
....
....
while( (str = bf.readLine()) != null )boys[counter++]=str;

 

Αντικατέστησε στον αρχικό κώδικα τα αντίστοιχα μέρη.

Δημοσ.

και κάτι άλλο!το προηγούμενο το έκανα και οκ δούλεψε!

Αν π.χ. η πρώτη γραμμή του αρχείου είναι > Kostas 6273 <

πώς μπορώ να βάλω το Kostas σε διαφορετικό πίνακα και το 6273 σε διαφορετικο?

Δημοσ.

Για να πάρεις τα δύο ή περισσότερα μέρη ενός string που χωρίζονται με ένα κενό κάνε:

 

String[] parts = theKwstasString.split("\\s");

Δημοσ.
Για να πάρεις τα δύο ή περισσότερα μέρη ενός string που χωρίζονται με ένα κενό κάνε:

 

String[] parts = theKwstasString.split("\\s");

 

για παράδειγμα έβαλα Kostas!

επειδή είναι κατάλογος ονομάτων πώς θα το κάνω?

Δημοσ.

Φίλε μου πρέπει να αρχίσεις λίγο το διάβασμα.:-)

 

Λοιπόν αυτό που σου έγραψα πάνω είναι γενικό.

Αντί για το theKwstasString που σου έβαλα πάνω μπορείς να βάλεις ένα οποιοδήποτε string το οποίο χωρίζεται σε δύο μέρη με ένα κενό στην μέση.

Δημοσ.
Φίλε μου πρέπει να αρχίσεις λίγο το διάβασμα.:-)

 

Λοιπόν αυτό που σου έγραψα πάνω είναι γενικό.

Αντί για το theKwstasString που σου έβαλα πάνω μπορείς να βάλεις ένα οποιοδήποτε string το οποίο χωρίζεται σε δύο μέρη με ένα κενό στην μέση.

 

thanks για σήμερα πάντως!!!

Δημοσ.

Φίλε την κατάφερα σε μεγάλο ποσοστό την άσκηση!thanks!

κάτι τελευταίο:

κατάφερα να απομονώσω τα ονοματα των αγοριών σε ένα πινακα

name_of_boys[1000]!τώρα ζητάω από τον χρήστη να μου δώσει ένα όνομα String search_name και να το ψάξω μέσα στον κατάλογο!

για κοίτα γιατί δεν πετυχαίνει (name_of_boys==search_name)??

σου δείχνω και μέρος του κώδικα

//edw tha zhtaw apo ton xristi na grapsei ena onoma

System.out.println(name_of_boys[0]);

Scanner scan = new Scanner(System.in);

System.out.println("Dwse to onoma pou theleis na psakseis:");

String search_name = scan.nextLine();

System.out.println(search_name);

for (int i=0;i<1000;i++) {

if (search_name!=name_of_boys) {

System.out.println(search_name+"is ranked "+i+" in popularity among boys with namings");

}

}

το θέμα είναι ότι δε μπαίνει μέσα στο if!!!

Δημοσ.

Με το == μπορείς να συγκρίνεις μόνο primitive types (int,boolean,float,double κτλ)...

 

Πρέπει να κάνεις : name_of_boys.equals(search_name);

Δημοσ.
Με το == μπορείς να συγκρίνεις μόνο primitive types (int,boolean,float,double κτλ)...

 

Πρέπει να κάνεις : name_of_boys.equals(search_name);

 

thanks!!!!

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...