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

Nauka javy-klasy, program pomija wpisywanie

VPS Starter Arubacloud
0 głosów
161 wizyt
pytanie zadane 13 stycznia 2018 w Java przez Yoshow Nowicjusz (240 p.)
edycja 13 stycznia 2018 przez Yoshow

Witam, uczę się javy, niestety przy 2 osobie program zamiast poczekać aż wpiszę imię to wypisuje od razu pytanie o wiek, moglibyście dać dodatkowo jakieś rady, dzięki z góry!

Tak wygląda kod :

 

import java.util.Scanner;

class Osoba {
    String name;
    int age;
    
    void speak()
    {
        System.out.println("My name is: " + name + ", " + "I am "+ age);
    }
    void hello()
    {
        System.out.println("Hello there!");
    }
    }

public class zadanie5
{
    private static Scanner wpisz;

    public static void main(String[] args)
        {
        wpisz = new Scanner(System.in);
        Osoba osoba1 = new Osoba();
        Osoba osoba2 = new Osoba();
        osoba1.hello();
        System.out.println("Wpisz swoje imie: ");
        osoba1.name = wpisz.nextLine();
        System.out.println("Wpisz Ile masz lat: ");
        osoba1.age = wpisz.nextInt();
        
        
        System.out.println("Wpisz swoje imię: ");
        osoba2.name = wpisz.nextLine();
        System.out.println("Wpisz Ile masz lat: ");
        osoba2.age = wpisz.nextInt();
        
        osoba1.speak();
        osoba2.speak();
        
        }
}

 

komentarz 13 stycznia 2018 przez KariK-02 Mądrala (6,030 p.)
Kod daj do bloczku
komentarz 13 stycznia 2018 przez Yoshow Nowicjusz (240 p.)
Zrobione, dzięki, pierwszy raz dodawałem tu pytanie:)

2 odpowiedzi

+2 głosów
odpowiedź 13 stycznia 2018 przez Tomasz90 Nałogowiec (25,140 p.)
Musiałbyś wywołać wpisz.nextLine() zaraz po tym pobraniu wieku pierwszej osoby. Jak wpiszesz wiek i naciskasz enter to on pobiera ten enter poprzez następny nextLine(). A co do samego kodu to na pewno nazwa każdej klasy z dużej litery. Zamiast metody speak to lepiej nadpisać toString(). Ja bym wolał tablicę/listę osób zrobić zamiast kopiowania tego samego ale tu masz tylko dwie osoby to jeszcze ujdzie. Pole "wpisz" bym zrobił jako zmienną lokalną i po skończeniu wczytywania bym użył na nim metody close(). Zdecyduj się na jeden język jak piszesz kod bo mieszasz polski z angielskim (lepiej po angielsku pisać).
+1 głos
odpowiedź 13 stycznia 2018 przez Wiciorny Ekspert (277,460 p.)

Cześć, dzieje się tak ponieważ- scanner  uwzględnia już puste linie. Wprowadzenie  metody 

Czemu się tak dzieje?

Otóż jeśli używasz nextInt() - scanner nie kończy czytania linii ( do końca, przechodząc do następnej ) natomiast pobiera wartość inta zostając w tej samej lini stąd ten problem. Więc trzeba mu tu rozkazać przejść do nowej lini :) znowu. 

 

nextLine(); rozwiązuje problem 

 

import java.util.Scanner;

class Osoba {
	String name;
	int age;

	void speak()
	{
		System.out.println("My name is: " + name + ", " + "I am "+ age);
	}
	void hello()
	{
		System.out.println("Hello there!");
	}
}

public class zadanie5
{
	private static Scanner wpisz;

	public static void main(String[] args)
	{
		wpisz = new Scanner(System.in);
		Osoba osoba1 = new Osoba();
		Osoba osoba2 = new Osoba();
		osoba1.hello();
		System.out.println("Wpisz swoje imie: ");
		osoba1.name = wpisz.nextLine();
		System.out.println("Wpisz Ile masz lat: ");
		osoba1.age = wpisz.nextInt();
		
		// przejśćie do nowej lini załatwi sprawe
		wpisz.nextLine();

		System.out.println("Wpisz swoje imię: ");

		osoba2.name = wpisz.nextLine();
		System.out.println("Wpisz Ile masz lat: ");
		osoba2.age = wpisz.nextInt();

		osoba1.speak();
		osoba2.speak();

	}
}

 

Podobne pytania

0 głosów
2 odpowiedzi 437 wizyt
pytanie zadane 6 grudnia 2018 w Java przez klestdrsv Nowicjusz (180 p.)
0 głosów
1 odpowiedź 234 wizyt
pytanie zadane 18 lipca 2018 w Java przez MorukanS Nowicjusz (140 p.)
–2 głosów
4 odpowiedzi 230 wizyt
pytanie zadane 17 lipca 2018 w Java przez MorukanS Nowicjusz (140 p.)

92,977 zapytań

141,940 odpowiedzi

321,182 komentarzy

62,303 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.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...