4 svar
259 visningar
barcode behöver inte mer hjälp
barcode 162 – Avstängd
Postad: 10 jul 2017 19:44

Villkorssatser

 

När jag väljer alt 2 så vill jag att man ska kunna skriva in både kön och inkomst. Men när jag kör programmet så hoppar den över "Skriva in kön: " och direkt till "Skriv in inkomst: ". Jag har gjort samma sak i en uppgift innan utan switch-case och då funkade det. Vad är felet? 

Stokastisk 3597 – Fd. Medlem
Postad: 10 jul 2017 19:53 Redigerad: 10 jul 2017 20:01

Det har nog med att göra att när du skriver in 2 i alternativ så matar du in "2\n" till scannern, dvs du får med ett radbyte efter tvåan. När du bara läser input.nextInt() så kommer scannern bara läsa 2:an och "\n" ligger kvar och väntar. När du sedan når input.nextLine() så kommer scannern se att du har "\n" liggandes där och då kommer den helt enkelt returnera "" och gå vidare.

Så testa lägg till input.nextLine() efter denna rad

int val = input.nextInt();

så att det står

int val = input.nextInt();

input.nextLine();

och se om det blir bättre.

barcode 162 – Avstängd
Postad: 10 jul 2017 20:26
Stokastisk skrev :

Det har nog med att göra att när du skriver in 2 i alternativ så matar du in "2\n" till scannern, dvs du får med ett radbyte efter tvåan. När du bara läser input.nextInt() så kommer scannern bara läsa 2:an och "\n" ligger kvar och väntar. När du sedan når input.nextLine() så kommer scannern se att du har "\n" liggandes där och då kommer den helt enkelt returnera "" och gå vidare.

Så testa lägg till input.nextLine() efter denna rad

int val = input.nextInt();

så att det står

int val = input.nextInt();

input.nextLine();

och se om det blir bättre.

Okej tack så mycket det funkade :). Men vad menas med "2\n" eller "\n"? Min bok har inte gått igenom det än.

Stokastisk 3597 – Fd. Medlem
Postad: 10 jul 2017 20:33

När man skriver strängar så finns det vissa specialtecken. Ett specialtecken är \n, detta är radbyte. Så exempelvis så kan du testa skriva ut "hejsan\nsvejsan", du bör få utskriften

hejsan

svejsan

Det finns flera sådana tecken som du kan se här https://docs.oracle.com/javase/tutorial/java/data/characters.html

barcode 162 – Avstängd
Postad: 10 jul 2017 20:37 Redigerad: 10 jul 2017 20:38
Stokastisk skrev :

När man skriver strängar så finns det vissa specialtecken. Ett specialtecken är \n, detta är radbyte. Så exempelvis så kan du testa skriva ut "hejsan\nsvejsan", du bör få utskriften

hejsan

svejsan

Det finns flera sådana tecken som du kan se här https://docs.oracle.com/javase/tutorial/java/data/characters.html

Aha det hjälper en hel del. Då slipper man skriva ut System.out.print flera gånger om man vill ha radbyte för varje text. Vilket jag har suttit och gjort hela tiden haha.

Svara
Close