/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
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 !!!



Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408941
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste