Scanner
Hej! Vad är felet på min kod? Jag fattar inte vad errorn menar… tack på förhand !!!
Du gör två inläsningar med input.nextLine() efter varann utan mellanliggande inmatning. Använd mönstret:
Skriv ledtext
Läs in
Skriv ledtext
Läs in.
Glöm inte heller att stänga scannern med lämplig metod.
Tack!! men om jag gör såhär;
import java.util.Scanner;
public class questions {
public static void main(String[] args) {
Scanner scanObj = new Scanner(System.in);
System.out.println("What is your first name?");
String name = scanObj.nextLine();
System.out.println("What is your age?");
int age = scanObj.nextInt();
System.out.println("What is your favorite game?");
String favGame = scanObj.nextLine();
}
}
// så går det inte att skriva i terminalen när jag ska svara på frågan "what is your favorite game"? MEN om jag ersätter nextLine() som är under"what is your favorite game"? med next() så går det at skriva i terminalen...
hur kommer det sig??
Det har att göra med hur scanner fungerar. När du läser in med nextLine() så läser scannern till nästa radslut, när du läser med next() och nextInt() så läser scanner till nästa "white space" som t ex mellanslag.
Du skriver in ditt namn och trycker retur och scannern läser in hela den raden
Du skriver in din ålder och trycker retur och scannern läser in din ålder men ditt returtecken (radslut) ligger i inläsningsbufferten
Du skriver in ditt favoritspel och nu läser scannern in det radslut som ligger i inläsningsbufferten INNAN ditt favoritspel.
Det finns olika lösningar på det
Du kan läsa in åldern med nextLine() och konvertera till int
Du kan läsa in det extra radslutet med en nextLine() innan du läser in ditt favoritspel
Du kan använda skip() efter att du läst in åldern.
Skulle föreslå nr 2