• 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

Object Storage Arubacloud
0 głosów
150 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 (269,790 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 347 wizyt
pytanie zadane 6 grudnia 2018 w Java przez klestdrsv Nowicjusz (180 p.)
0 głosów
1 odpowiedź 224 wizyt
pytanie zadane 18 lipca 2018 w Java przez MorukanS Nowicjusz (140 p.)
–2 głosów
4 odpowiedzi 211 wizyt
pytanie zadane 17 lipca 2018 w Java przez MorukanS Nowicjusz (140 p.)

92,568 zapytań

141,421 odpowiedzi

319,627 komentarzy

61,956 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!

...