23. september 2002 - 19:39
Der er
35 kommentarer og 2 løsninger
Problem med if-else / why-catch og while løkke.
Hej Ekspert brugere. Jeg er lige startet på Datamatiker uddannelsen, og har så programmering i Java. Nu er jeg rendt ind i et pisse irriterende problem. Min kode ser ud som følgende: ******************************************************* import java.io.*; import java.util.*; public class InputOutput { public static void main(String[] args) throws IOException { BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); FileReader fil = new FileReader("d:/java/sampledir/users.txt"); BufferedReader ind = new BufferedReader(fil); String username, password; String linie = ind.readLine(); System.out.print("Username: "); username = input.readLine(); System.out.println(username); System.out.print("Password: "); password = input.readLine(); System.out.println(password); while (linie != null) { try { StringTokenizer bidder = new StringTokenizer(linie, ":", false); String brugernavn = bidder.nextToken(); String pwd = bidder.nextToken(); String status = bidder.nextToken(); if(username.equals(brugernavn.trim()) && password.equals(pwd.trim())) System.out.println("Welcome "+username+" your Status is "+status); linie = ind.readLine(); } catch (FileNotFoundException u) { System.out.println("Filen kunne ikke findes."); } catch (Exception u) { System.out.println("Fejl ved læsning af fil."); u.printStackTrace(); } } ind.close(); } } ******************************************************* problemet er at få den til at skrive noget, hvis ingen af de statements finder sted. Altså hvis ingen af linierne i filen passer det til brugeren skriver ind. Jeg kan simplethen ikke få lortet til det. :( Nogle der ved hvad der skal gøres, eller kan se fejlen?? - TheSpeaker.
Annonceindlæg fra IBM
23. september 2002 - 19:44
#1
hvor går du?
23. september 2002 - 19:45
#2
*SMOK* *klasker hovedet i bordet* Ballerup Handelsskole. Men nu det var ikke spørgsmålet. ;)
23. september 2002 - 19:53
#3
hvis jeg fjerne det med status kører det fint...har du lige et linieeksempel fra users.txt?
23. september 2002 - 19:57
#4
brugernavn:password:status sådan er der flere af. så kan du selv lave nogle brugere med tilhørende password og status. sæt status på igen, og hvad der sker hvis du bare skriver brugernavn: test og password: test, og brugeren ikke findes i filen.
23. september 2002 - 20:03
#5
jeg er nok ikke helt med på hvad du vil have der skal ske...
23. september 2002 - 20:16
#6
okey har du oprettet users.txt og smidt 1 eller flere brugere i den?? hvis ja. Så prøv at køre programmet, og skriv et brugernavn der ikke findes i filen. så sker der INTET efter du har tastet brugernavn og password... right?? Der vil jeg gerne have at den skal skrive "Welcome username your Status is Guest" ... sådan at der sker noget, uanset hvad man gør. - TheSpeaker.
23. september 2002 - 20:26
#7
Kan du ikke bare sætte en boolean i din if-sætning, som sættes til TRUE hvis navnet findes? fx. import java.io.*; import java.util.*; public class InputOutput { public static void main(String[] args) throws IOException { BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); FileReader fil = new FileReader("d:/java/sampledir/users.txt"); BufferedReader ind = new BufferedReader(fil); String username, password; String linie = ind.readLine(); System.out.print("Username: "); username = input.readLine(); System.out.println(username); System.out.print("Password: "); password = input.readLine(); System.out.println(password); Boolean navnFindes = false; while (linie != null) { try { StringTokenizer bidder = new StringTokenizer(linie, ":", false); String brugernavn = bidder.nextToken(); String pwd = bidder.nextToken(); String status = bidder.nextToken(); if(username.equals(brugernavn.trim()) && password.equals(pwd.trim())) System.out.println("Welcome "+username+" your Status is "+status); linie = ind.readLine(); navnFindes = true; } catch (FileNotFoundException u) { System.out.println("Filen kunne ikke findes."); } catch (Exception u) { System.out.println("Fejl ved læsning af fil."); u.printStackTrace(); } } ind.close(); if(!navnFindes) { System.out.println("snydt"); } } }
23. september 2002 - 20:27
#8
husk tuborg ved if-sætning ;)
23. september 2002 - 20:32
#9
okey prøver når jeg har spist.
23. september 2002 - 20:39
#10
if( username.equals(brugernavn.trim()) && password.equals(pwd.trim())) { System.out.println( "Welcome " + username + " your Status is " + status ); linie = ind.readLine(); } else { System.out.println( "Welcome username your Status is Guest" ); break; } det her virker i hvert fald.
23. september 2002 - 20:40
#11
InputOutput.java [34:1] cannot resolve symbol symbol : variable navnfindes location: class InputOutput navnfindes = true; ^ InputOutput.java [47:1] cannot resolve symbol symbol : variable navnfindes location: class InputOutput if(!navnfindes) ^ 2 errors Errors compiling InputOutput.java.
23. september 2002 - 20:42
#12
Okey jeg laver den lige om, der var noget jeg havde overset. InputOutput.java [22:1] incompatible types found : boolean required: java.lang.Boolean Boolean navnFindes = false; ^ InputOutput.java [36:1] cannot resolve symbol symbol : variable navnfindes location: class InputOutput navnfindes = true; ^ InputOutput.java [49:1] cannot resolve symbol symbol : variable navnfindes location: class InputOutput if(!navnfindes) ^ 3 errors Errors compiling InputOutput.java.
23. september 2002 - 20:43
#13
har lige rettet en tastefejl, men får stadig samme fejl.
23. september 2002 - 20:53
#14
naaaaaaaaaaarj...nevermind
23. september 2002 - 20:57
#15
hvad!? jeg har lige kopieret hele det script ind du lige har skrevet... stadig samme fejltype.
23. september 2002 - 21:01
#16
He, du er jo nødt til at prøve dig lidt frem jo, når programmet ikke virker.. Du skal her lave boolean med småt, ikke Boolean med stort ;)
23. september 2002 - 21:02
#17
rudidanmark -> okey, prøver lige...
23. september 2002 - 21:03
#18
Rudi -> så får jeg denne fejl: InputOutput.java [48:1] variable navnFindes might not have been initialized if(!navnFindes) ^ 1 error Errors compiling InputOutput.java.
23. september 2002 - 21:05
#19
Okey når jeg skriver boolean navnFindes = false; så laver den ingen fejl... men den skriver INTET efter brugernavn og password...
23. september 2002 - 21:06
#20
skriver du boolean NavnFindes eller navnFindes, hvor du laver din boolean?
23. september 2002 - 21:07
#21
du skal selvfølgelig have samme navne gennem programmet
23. september 2002 - 21:08
#22
det har jeg også... hvis jeg skriver if(navnFindes) istedet for if(!navnFindes) så skriver den snydt ved alle... men sætter jeg så ! på igen, sker der igen intet...
23. september 2002 - 21:09
#23
navnFindes
23. september 2002 - 21:13
#24
du skal lige indsætte et par tuborg i din if sætning, så navnFindes kun er sand, når navnet er der. if(username.equals(brugernavn.trim()) && password.equals(pwd.trim())) { System.out.println("Welcome "+username+" your Status is "+status); linie = ind.readLine(); navnFindes = true; } se om det ikke skulle virke
23. september 2002 - 21:15
#25
linie = ind.readLine() skal nok være efter din if-sætning
23. september 2002 - 21:16
#26
VIIIIIIIIIIIIIIILDT!!!!!!!!!!!!!!!!!!!!!!!!!!!
23. september 2002 - 21:17
#27
men hvorfor fortsætter den så uendeligt hvis linie = ind.readLine(); står inde i min if løkke??
23. september 2002 - 21:17
#28
! kan du bruge til at finde ud af om din boolean er false
23. september 2002 - 21:18
#29
import java.io.*; import java.util.*; public class InputOutput { public static void main(String[] args) throws IOException { BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); FileReader fil = new FileReader("d:/java/sampledir/users.txt"); BufferedReader ind = new BufferedReader(fil); String username, password; String linie = ind.readLine(); System.out.print("Username: "); username = input.readLine(); System.out.println(username); System.out.print("Password: "); password = input.readLine(); System.out.println(password); int navnFindes = 0; while (linie != null) { try { StringTokenizer bidder = new StringTokenizer(linie, ":", false); String brugernavn = bidder.nextToken(); String pwd = bidder.nextToken(); String status = bidder.nextToken(); if( username.equals(brugernavn.trim()) && password.equals(pwd.trim())) { System.out.println( "Welcome " + username + " your Status is " + status ); linie = ind.readLine(); navnFindes=1; } else { System.out.println( "Welcome username your Status is Guest" ); break; } } catch (FileNotFoundException u) { System.out.println("Filen kunne ikke findes."); } catch (Exception u) { System.out.println("Fejl ved læsning af fil."); u.printStackTrace(); } } ind.close(); if(navnFindes==0) { System.out.println("snydt"); } } }
23. september 2002 - 21:20
#30
Yep det virker. ;) har dog programmeret Perl og PHP. ;) Men nu har jeg så en quest mere. ;) At få den til at spytte det ud i et browser vindue, med knapper og input bokse... nogle du vil hjælpe med, eller vil du have dine 60 point?? *G*
23. september 2002 - 21:21
#31
fordi du ikke læser en ny linie ind, når din if-sætning ikke er gyldig, og while løkken stopper jo først når linie er lig null
23. september 2002 - 21:22
#32
ahhhh okey. ;) *skriver det sig bag øret.*
23. september 2002 - 21:24
#33
Joh det vil jeg da, men har du ikke en bog at starte med først?
23. september 2002 - 21:26
#34
jeg sidder med dem nu. *GGG* og jeg bruger dem også så vidt muligt. *GGG* ;)
23. september 2002 - 21:43
#36
Okey nu har jeg gloet i over 20 mins i de skide bøger, og jeg kan ikke finde andet end System.out.println(""); hvordan skal jeg skrive det ud i en browser?
23. september 2002 - 21:44
#37
swing!?... *lost* *GGGGG* Kigger lige. ;)
Kurser inden for grundlæggende programmering