Wprowadzanie danych od użytkownika

0

Hej!

Mam mały problem, może ktoś dopomoże laikowi.
Mój program jak na razie wygląda tak:

public class Countries {

	private String name, language, adventages, disadventages;
	
		Countries (String name, String language, String adventages, String disadventages){			
			this.name = name;
			this.language = language;
			this.adventages = adventages;
			this.disadventages = disadventages;
		}
		
		Countries (String name, String language){
			this.name = name;
			this.language = language;		
		}
		
		Countries (){
		
		}
	
	String getName(){
		return name + language + adventages + disadventages;	
	}

}



import java.util.Scanner;

public class Emigration {
	
	public static void main(String[] args) {
		int numberOfCountries = 4;
		Countries[] countries = new Countries[numberOfCountries];
		
		Scanner in = new Scanner(System.in);
		
		System.out.println("Wpisz numer 1-4");
		int i = in.nextInt();
		
		System.out.println("Podaj nazwę kraju");
		String a = in.nextLine();
		
		System.out.println("Podaj język");
		String b = in.nextLine();
		
		System.out.println("Podaj +");
		String c = in.nextLine();
		
		System.out.println("Podaj -");
		String d = in.nextLine();
		
		in.close();
		
		countries[i - 1] = new Countries(a, b, c, d);
		
		
		System.out.println(countries[i - 1].getName());
	}

}

Na wyjciu wychodzi coś takiego:

Wpisz numer 1-4
4

Podaj nazwę kraju
Podaj język
hiszpański

Podaj +
jest ciepło

Podaj -
jest daleko

, hiszpański, jest ciepło, jest daleko

Jak widzicie, problem pojawia się przy nazwie kraju. Program o nią pyta i nie czeka na odpowiedź użytkownika.
Macie pomysł dlaczego?

1
 int i = in.nextInt();

Ta linia nie pobiera znaku nowej linii, a więc zostaje on pobrany przez:

 String a = in.nextLine();

W efekcie dostajesz pustego Stringa. Możesz temu zapobiec wczytując całą linię po wczytaniu liczby (poprzez Scanner.nextLine()).

0
Jaca777 napisał(a):
 int i = in.nextInt();

Ta linia nie pobiera znaku nowej linii, a więc zostaje on pobrany przez:

 String a = in.nextLine();

W efekcie dostajesz pustego Stringa. Możesz temu zapobiec wczytując całą linię po wczytaniu liczby (poprzez Scanner.nextLine()).

Dzięki, jesteś wielki! Nawet jakoś ogarniam, co tu się właśnie stało ;D

1 użytkowników online, w tym zalogowanych: 0, gości: 1