maniac89 Δημοσ. 15 Μαΐου 2008 Δημοσ. 15 Μαΐου 2008 σας κάνω μία περίληψη της άσκησης: έχω ένα αρχείο με ονόματα των αγοριών,διαβάζω κανονικά το αρχείο αλλά δεν μπορώ να περάσω τα ονόματα σαν 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); } }
alex2005 Δημοσ. 15 Μαΐου 2008 Δημοσ. 15 Μαΐου 2008 Επειδή δεν ξέρεις από την αρχή που ξεκινάς να διαβάζεις το αρχείο το πλήθος των γραμμών είναι καλύτερο να το κάνεις με μία δομή όπως οι λίστες. Αν δεν σε χαλάει αυτή η λύση τότε: > 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()); }
maniac89 Δημοσ. 15 Μαΐου 2008 Μέλος Δημοσ. 15 Μαΐου 2008 Επειδή δεν ξέρεις από την αρχή που ξεκινάς να διαβάζεις το αρχείο το πλήθος των γραμμών είναι καλύτερο να το κάνεις με μία δομή όπως οι λίστες. Αν δεν σε χαλάει αυτή η λύση τότε: > 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?
alex2005 Δημοσ. 15 Μαΐου 2008 Δημοσ. 15 Μαΐου 2008 Νομίζω πως είναι προφανές από τον παραπάνω κώδικα. Τέλος πάντων....το ξαναγράφω. > String[] boys = new String[1000]; int counter = 0; .... .... while( (str = bf.readLine()) != null )boys[counter++]=str; Αντικατέστησε στον αρχικό κώδικα τα αντίστοιχα μέρη.
maniac89 Δημοσ. 15 Μαΐου 2008 Μέλος Δημοσ. 15 Μαΐου 2008 και κάτι άλλο!το προηγούμενο το έκανα και οκ δούλεψε! Αν π.χ. η πρώτη γραμμή του αρχείου είναι > Kostas 6273 < πώς μπορώ να βάλω το Kostas σε διαφορετικό πίνακα και το 6273 σε διαφορετικο?
alex2005 Δημοσ. 15 Μαΐου 2008 Δημοσ. 15 Μαΐου 2008 Για να πάρεις τα δύο ή περισσότερα μέρη ενός string που χωρίζονται με ένα κενό κάνε: String[] parts = theKwstasString.split("\\s");
maniac89 Δημοσ. 15 Μαΐου 2008 Μέλος Δημοσ. 15 Μαΐου 2008 Για να πάρεις τα δύο ή περισσότερα μέρη ενός string που χωρίζονται με ένα κενό κάνε: String[] parts = theKwstasString.split("\\s"); για παράδειγμα έβαλα Kostas! επειδή είναι κατάλογος ονομάτων πώς θα το κάνω?
alex2005 Δημοσ. 15 Μαΐου 2008 Δημοσ. 15 Μαΐου 2008 Φίλε μου πρέπει να αρχίσεις λίγο το διάβασμα. Λοιπόν αυτό που σου έγραψα πάνω είναι γενικό. Αντί για το theKwstasString που σου έβαλα πάνω μπορείς να βάλεις ένα οποιοδήποτε string το οποίο χωρίζεται σε δύο μέρη με ένα κενό στην μέση.
maniac89 Δημοσ. 15 Μαΐου 2008 Μέλος Δημοσ. 15 Μαΐου 2008 Φίλε μου πρέπει να αρχίσεις λίγο το διάβασμα. Λοιπόν αυτό που σου έγραψα πάνω είναι γενικό. Αντί για το theKwstasString που σου έβαλα πάνω μπορείς να βάλεις ένα οποιοδήποτε string το οποίο χωρίζεται σε δύο μέρη με ένα κενό στην μέση. thanks για σήμερα πάντως!!!
maniac89 Δημοσ. 15 Μαΐου 2008 Μέλος Δημοσ. 15 Μαΐου 2008 Φίλε την κατάφερα σε μεγάλο ποσοστό την άσκηση!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!!!
alex2005 Δημοσ. 15 Μαΐου 2008 Δημοσ. 15 Μαΐου 2008 Με το == μπορείς να συγκρίνεις μόνο primitive types (int,boolean,float,double κτλ)... Πρέπει να κάνεις : name_of_boys.equals(search_name);
maniac89 Δημοσ. 15 Μαΐου 2008 Μέλος Δημοσ. 15 Μαΐου 2008 Με το == μπορείς να συγκρίνεις μόνο primitive types (int,boolean,float,double κτλ)... Πρέπει να κάνεις : name_of_boys.equals(search_name); thanks!!!!
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.