har ett litet problem. ska läsa in en txtfil och dunka in varje rad i en variabel. alltså en rad per variabel. array med andra ord :)
men av nån anledning så fungerar det inte så bra. inget felmeddelande eller så. men när jag kör igång appletten så står det i statusraden att appletten inte har initierats och det är bara grått.
det beror på denna koden, men jag hittar inget som kan vara fel så därför skulle jag behöva lite hjälp.
try
{
FileReader is = new FileReader("fragor.txt");
BufferedReader buff = new BufferedReader(is);
boolean eof = false;
int index;
index=0;
while(!eof) {
fragan[index]=buff.readLine();
if(fragan[index] == null){
eof = true;
}
index++;
}
buff.close();
}
catch (IOException e)
{
}
}
PeWMedlem sedan juni 200010 432 inlägg Du gör ju inget med eventuella IOErrors.. du bara testar ju. Prova att peta in lite händelser i catch-satsen och se om det är ett IO-fel.
spangoMedlem sedan juni 20008 205 inlägg Om det nu är en applet bör du byta ut den här raden:
FileReader is = new FileReader("fragor.txt");
Mot något sådant här:
Reader is = new InputStreamReader(new URL(getDocumentBase(), "fragor.txt").openConnection().getInputStream());
Nu försöker du öppna en fil i klientdatorn, vilket inte är så lyckat. :)
la till System.err.println(e.getMessage()); i catch men inget händer.
bytte för övrigt ut läsgrunkan mot det som spango föreslog :)
spangoMedlem sedan juni 20008 205 inlägg Och du tittar på det som kommer ut i javakonsolen?
kommer inte nåt i javaappletten och inget i fönstret där det kompileras där felmeddelanden brukar komma (kör editplus)
PeWMedlem sedan juni 200010 432 inlägg Då är det troligen nån annan del av din kod som är fel, prova att kommentera bort vitala delar och jobba dig fram till felet ;)
det fungerar om jag tar bort den där koden, så det måste vara nåt med den :l
PeWMedlem sedan juni 200010 432 inlägg Hur ser filen ut som ska läsas?
Tänkte att din loop kanske snurrar i all oändlighet... prova att ta döda loopen genom att tilldela eof true utan villkorsprövning.
while(!eof) {
fragan[index]=buff.readLine();
//if(fragan[index] == null){
eof = true;
//}
index++;
}
PeWMedlem sedan juni 200010 432 inlägg Det finns ju andra sätt att kolla om filen är slut, bla med exceptions -> http://java.sun.com/products/jdk/1.2/docs/api/java/io/OptionalDataException.html
Som det fungerar i ditt fall så läser du först in bufferten till arrayen och sen kollar du om arrayen på sista index är null. Du borde nog kolla direkt på bufferten ist. ;)
Förresten så kan du bespara dig en massa framtida fel om du kör med en Vector ist för en array. Om filen är längre än din allokering får du annars indexOutOfBounds.
spangoMedlem sedan juni 20008 205 inlägg
Ursprungligen av visslaren kommer inte nåt i javaappletten och inget i fönstret där det kompileras där felmeddelanden brukar komma (kör editplus)
Ja, men hur blir det i *javakonsolen*? Där visas allt som skrivs ut på System.out.
IE5: Gå in på Verktyg -> Internetalternativ -> Avancerat -> Aktivera Javakonsol, starta om Explorer, och öppna javakonsol med Visa -> Javakonsol
MZ: Tools -> Web development eller Tasks (beroende på version) -> Java console
spango: kollat där nu. kommer inte upp några meddelanden där.
pew: provat att kommentera bort de där raderna som du kommenterat bort, ingen skillnad.
fragor.txt ser ut så här:
Vad är en ko?
Vad är Kalle Anka?
Vad är en maskros?
Vem skrev Sagan om ringen?
I vilket landskap ligger Örebro?
nu syns allting. ett steg på vägen. men ingenting händer. när man trycker på en knapp ska en fråga slumpas fram. men inget händer när man trycker på knappen. förutom att vissa knappar blir aktiva och andra inaktiva precis som det ska vara.
här har ni källkoden till appletten. den kanske kan hjälpa er att hjälpa mig :)
http://www26.brinkster.com/kankei/java2.txt
det finns en slumpgrej i den också som jag inte vet om den är rätt eller ej. ska ju slumpa fram frågorna. har provat med att skriva tillexempel fragan[1] där frågan ska skrivas ut men inte skrivs den ut :l
LimeMedlem sedan sep. 2001961 inlägg Jag skulle rekommendera att du tar //Slumpa talslump = (int)(min + Math.random() * (index - min + 1));
och gör den när du skall plocka fram en ny fråga...
En annan bra ide är att lagra alla frågorna i en Collection, t.ex. en Vector, som du slumpar in ordningen i och sedan så tar du ut en fråga i taget.
Fördelen med det sättet är att du kan lagra en klass som heter Fråga som innehåller frågan, svaret och metod för att kolla om användarens svar är rätt.
/Lime
nu lagras det i en vektor. programmet fungerar sålänge som man skriver in frågorna direkt i koden när man deklarerar vektorn. men när man läser från fil så händer ingenting när man trycker på startknappen :l
källkod: http://www26.brinkster.com/kankei/java3.txt
måste få det här att fungera tills måndag :l
PeWMedlem sedan juni 200010 432 inlägg För mig funkar koden. Tog den övre länkens kod (kom inte in i ovan länk) och dunkade in en vector ist för String array
private Vector fragan = new Vector();
private Vector svaret = new Vector();
... Samt redigerade loopen till :
while(buff.ready()) {
fragan.addElement(new String(buff.readLine()));
index++;
}
Och i startknappslyssnaren:
...
...
textlbl.setText(""+fragan.elementAt(slump)+"");
Funkade med inläsningen lokalt i min burk iaf ;)
ändrat till det där nu. får fyra felmeddelanden. alla pekar på ordet Vector på de rader där de deklarerades.
är det nån grej man måste importera i början för att få det att fungera?
SPiNMedlem sedan mars 20007 896 inlägg Jäpp, importera java.util.Vector, eller skriv hela contexten när du deklarerar. :)
har importerat den nu. felen är fortfarande kvar :l
ingen som vet vad det kan bero på?