3 svar
233 visningar
sampledragon5 behöver inte mer hjälp
sampledragon5 497
Postad: 3 nov 2021 08:30

Scanner

Hej! Vad är felet på min kod? Jag fattar inte vad errorn menar… tack på förhand !!!

CurtJ 1203
Postad: 3 nov 2021 09:50

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.

sampledragon5 497
Postad: 3 nov 2021 10:39

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??

CurtJ 1203
Postad: 3 nov 2021 10:56

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

Svara
Close