public class Valtiotesti
{
public static void main(String[] args)
{
Scanner lukija = new Scanner(System.in);
String nimi, pääkaupunki;
int asukasluku;
ArrayList<Valtio> valtiot = new ArrayList<Valtio>();
do{
System.out.println("Anna valtion nimi: ");
nimi = lukija.nextLine();
if(nimi.length()>0){
System.out.println("Anna ko. valtion pääkaupunki: ");
pääkaupunki = lukija.nextLine();
System.out.println("Anna ko. valtion asukasluku: ");
asukasluku = lukija.nextInt();
Valtio valtio = new Valtio(nimi, pääkaupunki, asukasluku);
valtiot.add(valtio);
}
}
while(nimi.length()>0);
}
}
У меня есть эта проблема с моим кодом: я хочу прочитать страны в ArrayList
, содержащий название страны (НИМИ), капитал (pääkaupunki) и население (asukasluku), до тех пор, пока пользователь не введет пустым string как имя страны (просто нажмите клавишу ввода).Do-то время проблема петли
Однако, когда код входит в следующий раунд, netbeans просто печатает вопрос: «Anna valtion nimi:» (укажите название страны) и заканчивает программу (BUILD SUCCESSFUL), не давая возможности войти в новую страну .. .
Пожалуйста, объясните мне. Спасибо –
@dovy 'lukija.nextInt()' читает часть строки (новая строка не читается). Поэтому в следующей итерации цикла 'nimi = lukija.nextLine();' получает эту новую строку вместо следующей строки, поэтому 'nimi.length' равно 0 (новые строковые символы усекаются) и цикл выйдет. – Eran