• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Kompilator nie zczytuje danych od użytkownika, tylko od razu przechodzi do następnej instrukcji

Object Storage Arubacloud
0 głosów
223 wizyt
pytanie zadane 19 lutego 2016 w Java przez NYC_fan Początkujący (260 p.)

Cześć,

kod:

import java.util.Scanner;

public class Kolejnyboolean {
	public static void main(String[] args){
		
		Scanner sc = new Scanner(System.in);
		
		String auto = ("tak");
		
		System.out.println("Ile masz lat");
		int wiek = sc.nextInt();
		
		System.out.println("Czy masz samochód?");
		String odp = sc.nextLine();
		boolean b = odp.equals(auto);
		
		System.out.println("podaj liczbę zmiennoprzecinkową");
		double liczba = sc.nextDouble();
		
		System.out.println(wiek);
		System.out.println(b);
		System.out.println(liczba);
		
		sc.close();
	}

}

Wydaje mi się, że program jest mega oczywisty dla mnie, ale nie rozumiem, dlaczego jak uruchomię to eclipse nie chce odemnie odpowiedzi na pytanie czy mam auto, tylko wyświetla kolejne pytanie o liczbę rzeczywistą.

pozdrawiam

1 odpowiedź

0 głosów
odpowiedź 19 lutego 2016 przez Javowiec Pasjonat (21,560 p.)
wybrane 19 lutego 2016 przez NYC_fan
 
Najlepsza

Jeżeli chcesz odczytać napis ze Scannera po tym jak wcześniej odczytywałeś liczbę, musisz wczytać jeszcze znak nowej linii. Wczytywanie liczby polega na wczytaniu samej liczby. Nie wczytuje się wtedy enter, który wciskasz po zatwierdzeniu, dlatego przed wczytaniem napisu musisz wczytać ten enter:

System.out.println("Ile masz lat");
int wiek = sc.nextInt();
sc.nextLine();
komentarz 19 lutego 2016 przez NYC_fan Początkujący (260 p.)

Ja jeszcze do końca nie rozumiem, co daje nam ta dopisana linijka sc.nextLine();.

Czyli skaner jakoś do swojej pamięci przypisuje, że będzie brał same zmienne typu pierwszej zmiennej, którą pobieram, a poźniej ja przy każdej zmiennej innego typu muszę dodąć sc.nextLine(); Trochę to dziwne

komentarz 19 lutego 2016 przez Javowiec Pasjonat (21,560 p.)

Jak wczytujesz liczby to skaner wczytuje tylko liczbę. Nie wczytuje entera, który wcisnąłeś, aby zatwierdzić tę liczbę (bo enter nie jest liczbą, tylko Stringiem).

Przy wczytywaniu tekstu jest inaczej. Skaner wtedy wczytuje enter, który wciśniesz.

Enter to inaczej znak nowej linii.

Przy Twoim wcześniejszym kodzie sytuacja wyglądała następująco:

  1. Wyświetla się pytanie "Ile masz lat?".
  2. Wpisujesz liczbę i klikasz enter.
  3. Enter, czyli znak nowej linii nie został wczytany do skanera, ponieważ jest Stringiem, więc przy następnym wywołaniu metody nextLine() wczyta go automatycznie.
  4. Wyświetla się pytanie "Czy masz samochód?" i skoro została wywołana metoda nextLine() to do zmiennej odp zostaje z automatu wczytany znak nowej linii.
  5. Wyświetla się polecenie "podaj liczbę zmiennoprzecinkową".

Skaner tak działa, więc musisz o tym pamiętać, że między wczytaniem liczby a napisu musisz jeszcze wywołać raz metodę nextLine().

Do inta nie możesz przypisać zarówno liczby jak i stringa. Przypisywany jest tylko int.

komentarz 19 lutego 2016 przez NYC_fan Początkujący (260 p.)
Dziękuje, teraz już wszystko rozumiem

Podobne pytania

+3 głosów
3 odpowiedzi 345 wizyt
pytanie zadane 19 października 2021 w Java przez ptomeccc Użytkownik (800 p.)
0 głosów
2 odpowiedzi 2,038 wizyt
pytanie zadane 1 czerwca 2017 w Java przez Gambr Dyskutant (7,530 p.)
0 głosów
1 odpowiedź 160 wizyt
pytanie zadane 13 lutego 2017 w Java przez Wolfy Nowicjusz (180 p.)

92,555 zapytań

141,403 odpowiedzi

319,554 komentarzy

61,940 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...