|
| BufferedReader.... Fra : holst |
Dato : 14-12-00 23:51 |
|
Endnu et problem med indlæsning fra fil med brug af BufferedReader....
Her er koden, som giver problemer:
while (buffText.readLine()!=null)
{
line.add(buffText.readLine());
}
Filen består af tre linier, og hvis jeg udskriver indholdet af element 0,
får jeg indholdet af linie 2. Forsøger jeg at udskrive indholdet af element
1, får jeg "null". Der er altså kun indhold i det 0. element, selvom der er
tre linier, og indholdet i det 0. element er linie 2 fra filen.
Løkken gennemløbes godt nok tre gange....jeg fatter det virkelig ikke!
Er der nogen der kan give en forklaring, eller er det en sag for Mulder &
Scully??
på forhånd tak
holst
| |
holst (15-12-2000)
| Kommentar Fra : holst |
Dato : 15-12-00 07:58 |
|
holst <holst@nork.auc.dk> wrote in message
news:59c_5.15277$72.258612@twister.sunsite.auc.dk...
> Endnu et problem med indlæsning fra fil med brug af BufferedReader....
> Her er koden, som giver problemer:
>
> while (buffText.readLine()!=null)
> {
> line.add(buffText.readLine());
> }
>
> Filen består af tre linier, og hvis jeg udskriver indholdet af element 0,
> får jeg indholdet af linie 2. Forsøger jeg at udskrive indholdet af
element
> 1, får jeg "null". Der er altså kun indhold i det 0. element, selvom der
er
> tre linier, og indholdet i det 0. element er linie 2 fra filen.
Udskifter jeg while betingelsen med, et udtryk lignende dette virker det
fint:
while (numberOfLines < 3)
så virker det fint, men den løsning kan jeg ikke bruge, da antallet af
linier i filen varierer......
MVH
holst
| |
Carsten (15-12-2000)
| Kommentar Fra : Carsten |
Dato : 15-12-00 08:49 |
|
He he, god ide ellers med dit andet forsøg, men dit problem er at du får
læst fra filen flere gange i et gennemløb. Jeg ville nok gøre noget a la:
String tmp = null;
do
{
tmp = buffText.readLine();
if (tmp != null) line.add(tmp);
} while (tmp != null);
Alternativt:
String tmp = null;
while ((tmp=buffText.readLine()) != null) line.add(Tmp);
Jeg kan ikke lide den sidste, idet den er kryptisk at læse om ½ år.
Carsten
"holst" <holst@nork.auc.dk> wrote in message
news:59c_5.15277$72.258612@twister.sunsite.auc.dk...
> Endnu et problem med indlæsning fra fil med brug af BufferedReader....
> Her er koden, som giver problemer:
>
> while (buffText.readLine()!=null)
> {
> line.add(buffText.readLine());
> }
>
> Filen består af tre linier, og hvis jeg udskriver indholdet af element 0,
> får jeg indholdet af linie 2. Forsøger jeg at udskrive indholdet af
element
> 1, får jeg "null". Der er altså kun indhold i det 0. element, selvom der
er
> tre linier, og indholdet i det 0. element er linie 2 fra filen.
> Løkken gennemløbes godt nok tre gange....jeg fatter det virkelig ikke!
>
> Er der nogen der kan give en forklaring, eller er det en sag for Mulder &
> Scully??
>
> på forhånd tak
>
> holst
>
>
| |
Soren 'Disky' Reinke (15-12-2000)
| Kommentar Fra : Soren 'Disky' Reinke |
Dato : 15-12-00 09:40 |
|
>
> String tmp = null;
> do
> {
> tmp = buffText.readLine();
> if (tmp != null) line.add(tmp);
> } while (tmp != null);
>
> Alternativt:
>
> String tmp = null;
> while ((tmp=buffText.readLine()) != null) line.add(Tmp);
>
> Jeg kan ikke lide den sidste, idet den er kryptisk at læse om ½ år.
Nu skrive du den også på den grimmeste måde man kan, prøv med:
String tmp;
while( (tmp=buffText.readLine()) != null)
{
line.add(tmp);
}
Så er den pludselig nem og forståelig.
Og noget pænere end den ovenstående do-while. Den er nemlig ret 'grim' da du
to gange checker for det samme 'tmp!=null' hvilket ikke er smart, for ændre
man kravet det ene sted er der chance for at glemme det, det andet sted, og
så går der lort i det.
--
With many Thanks
Soren ' Disky ' Reinke ICQ #1413069 remove 'ihsyd' when email replying
Please visit my Freshwater Aquaria Webpage
http://www.disky-design.dk/fish
| |
Carsten (15-12-2000)
| Kommentar Fra : Carsten |
Dato : 15-12-00 10:06 |
|
"Soren 'Disky' Reinke" <disky@disky-design.ihsyd.dk> wrote in message
news:3a39d9bc$0$9659$73beb97d@news.dk.uu.net...
> Nu skrive du den også på den grimmeste måde man kan, prøv med:
>
> String tmp;
>
> while( (tmp=buffText.readLine()) != null)
> {
> line.add(tmp);
> }
>
> Så er den pludselig nem og forståelig.
Ja, det er nu som man tager det (uden at ville starte en religionskrig). Det
jeg ikke kan lide ved den er, at der er en tildeling og en sammenligning på
samme linie. Hvis man skimmer sådan kode for - hurtigt - at finde
problembørn, så overser man ofte tildelingen, fordi man er vant til at while
(...) blot repræsenterer et gennemløb.
Eks. if ((i = ++name)>value--) value = 0;
Spørgsmål: I hvilke situationer bliver value sat til 0 ? Svar, det er næsten
umuligt at finde ud af uden at skulle skille sætningen ad.
Carsten
P.S. Spørgsmålet er retorisk !!!
| |
|
|