|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Nov 2008
Messaggi: 64
|
[Java] Memorizzare contenuto file.txt in array
Ciao,sto provando a leggere da file.txt e salvare ogni riga di esso in una posizione di un array di stringhe.Non capisco xò perchè mi dia come eccezione "java.lang.NullPointerException".
Codice:
File Txt_Corrente=new File(FileDiTestodir);
FileReader reader=new FileReader(Txt_Corrente);
BufferedReader input=new BufferedReader(reader);
String linea=input.readLine();
while(linea!=null)
{
righe[r]=linea;
Label_2.setText(linea);
r++;
linea=input.readLine();
}
Dov'è che sbaglio? Grazie per una vostra risposta...ciao |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Il tuo array di oggetti String lo hai inizializzato, prima di usarlo?
Cioè tipo: Codice:
// semplice dichiarazione di una reference: String[] stringArray; // inizializzazione: stringArray = new String[128]; Codice:
... righe[r]=linea; ... Se non ti sono note le dimensioni a priori puoi usare una collezione (il Collection Framework compreso nella distribuzione del JDK si trova nel package java.util), per esempio una lista di Stringhe: Codice:
ArrayList stringList = new ArrayList();
BufferedReader reader = new BufferedReader(new FileReader(new File(fileDiTesto)));
String linea = reader.readLine();
while (linea != null)
{
stringList.add(linea); // aggiunge una linea letta alla lista di String
linea = reader.readLine();
}
Dopo aver letto tutte le linee del file di testo, grazie al metodo .size() invocato sulla lista che restituisce appunto la dimensione della lista (intesa come numero totale di elementi inseriti), puoi sapere quante linee hai letto (bhe, a dire il vero se tieni un contatore nel ciclo di lettura è lo stesso): Codice:
int fileLines = stringList.size(); Codice:
// prendo la i-esima linea letta dalla lista: String aLine = (String) stringList.get(i);
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) Ultima modifica di banryu79 : 14-04-2009 alle 18:27. |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Nov 2008
Messaggi: 64
|
L'array di stringhe l'avevo dichiarato all'inizio senza dimensioni predefinite,proprio xkè non so a priori quanto siano le stringhe all'interno del file.txt.
Cmq ho seguito i tuoi consigli.Grazie della chiarissima spiegazione |
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Jul 2005
Messaggi: 291
|
quoto banryu79 in toto, tranne che l'oggetto ArrayList lo tipizzerei a stringhe, cioè
Codice:
ArrayList<String> ris=new ArrayList<String>() Codice:
String stringaInPosizioneK=ris.get(k) Codice:
for (String temp:ris){
//usa stringa temp
System.out.println(temp);
}
__________________
CPU: Intel Core 2 Quad Q6600 - Mobo: Asus P5E - RAM:4x2GB DDR2 - sk video: Power Color ATI Radeon HD3870 - HD:Western Digital 750GB Ultima modifica di morskott : 16-04-2009 alle 13:24. |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
A parte questo, resta naturalmente un'opzione ideale in questo caso.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Aug 2005
Messaggi: 579
|
Le soluzioni postate non sono solo migliori, sono proprio corrette.
È una regola basilare non usare gli array ma dei vettori a dimensione dinamica (arraylist) per memorizzare contenuti di cui non si conosce la dimensione, tanto è vero che nei linguaggi normalmente viene indicato un warning o generato un errore quando non si specificano le dimensioni nella dichiarazione di un array. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 02:57.




















