2011-11-07, 19:05
  #1
Medlem
Hej!

r totalgrn p bde programmering och java, men har iaf brjat frska lra mig. Nu frsker jag skriva en blackjackmaskin som lite vning men har sttt p ett fel som jag inte frstr.

Kod:
while () {
...
if () {
System.out.print("Take card? (y/n)");
reply = myScanner.findInLine(".").charAt(0); 
}
...
}
Detta i processen nr anvndaren ska dra s mnga kort denne nskar. Kompileringen gr bra, men nr jag kr programmet och kommer till denna rad fr jag felmeddelandet
"Exception in thread "main" java.lang.NullPointerException".
Vad jag fattat hr det ihop med att en variabel har ett null-vrde.
Men reply = myScanner.findInLine(".").charAt(0); frekommer ven tidigare i programmet, men d utanfr ngot while eller if statement. Vad gr jag fr fel?
__________________
Senast redigerad av berserkargang 2011-11-07 kl. 19:10.
Citera
2011-11-07, 20:17
  #2
Medlem
Jooncs avatar
Vad felet beror p gr inte att med skerhet sga om du inte frser oss med all kod, och vilken input du ger. Det r ocks bra om du skriver ut hela felmeddelandet. Jag misstnker dock att felet r att mnstret (the pattern) hittas inte, varp findInLine() returnerar null:
Citat:
Attempts to find the next occurrence of the specified pattern ignoring delimiters. If the pattern is found before the next line separator, the scanner advances past the input that matched and returns the string that matched the pattern. If no such pattern is detected in the input up to the next line separator, then null is returned and the scanner's position is unchanged. This method may block waiting for input that matches the pattern.
EDIT: detta skulle allts innebra att myScanner.findInLine(".") i stllet fr att returnera en strng returnerar null, och nr du frsker kalla p null.charAt() s fr du ett NullPointerException.
__________________
Senast redigerad av Joonc 2011-11-07 kl. 20:21.
Citera
2011-11-13, 20:49
  #3
Medlem
lr dig anvnda debuggern, det kommer spara dig mngder av tid i felskning (eller frgor p forum).

stt en breakpoint och kolla helt enkelt vad variablerna blir nr du kr programmet.
Citera
2011-11-14, 13:41
  #4
Moderator
Protons avatar
Om du nu inte har en debugger skulle det ju underltta om du skrev ut hela stacktracen.

En nullpointer fr du om en objektreferens r ogiltig(dvs r NULL) men som du nd frsker kra en metod p, eller p annat stt manipulera.

Icke initierade objektreferenser, eller om du explicit satt en referens till null brukar ofta stadkomma detta krningsfel. I fallet med din while-loop kanske det r ett scopeproblem som stller till din nullpointer, svrt att sga utan att se resterande kod och utan att ha sett den fulla stacktracen.
Citera

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in