2012-12-18, 14:13
  #1
Medlem
Sitter med följande kod som vägrar fungera för mig:

boolean b = true;
do
{
try
{
System.out.println("Fråga: ");
variabel = keyboard.nextInt();
keyboard.nextLine();
}
catch (InputMismatchException e)
{
System.out.println("Felaktig inmatning. Försök igen!\n");
b = false;
}
}
while (!b);

enArrayList.add(new Sak(variabel));


InputMisMatch är importerat från java.util och "variabel" är en statisk int deklarerad utanför mainmetoden men i huvudklassen.

Denna kod skriver ut en oändlig loop som ser ut som följande men oändlig:


Fråga:
Felaktig inmatning. Försök igen!

Fråga:
Felaktig inmatning. Försök igen!

Fråga:
Felaktig inmatning. Försök igen!


Varför blir det fel? Vill ju att det som ska hända är att man måste svara med heltal i sifferformat och om man svarar med nåt annat så spottar den ur sig "Felaktig inmatning. Försök igen!" och man får försöka igen. Vad gör jag fel?
Citera
2012-12-18, 14:22
  #2
Medlem
kh31d4rs avatar
använd code-taggar och indentera koden så att den går att läsa....
Citera
2012-12-18, 14:27
  #3
Medlem
Jooncs avatar
Som sagt, code-taggar hade underlättat. Jag använder inte Keyboard, men varför kör du en nextLine() utöver getInt()?
Hur som helst, du måste lägga till
b = true
efter
variabel = keyboard.nextInt();
Citera
2012-12-22, 22:10
  #4
Medlem
avazzas avatar
Detta borde fungera:

Kod:
int i = 0;
boolean b = true;
Scanner sc = new Scanner(System.in);
while(b){
	try{
		i = Integer.parseInt(sc.nextLine());
		b = false;
	} catch(NumberFormatException e){
		System.out.println("Felaktig inmatning. Försök igen!\n");
	}
}
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