Do-while循环问题

时间:2014-11-18 13:20:50

标签: java loops do-while

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,其中包含国家/地区名称(nimi),首都(pääkaupunki)和人口(asukasluku),直到用户输入空字符串作为国家名称(只需按Enter键)。

然而,当代码进入下一轮时,netbeans只打印出问题:“Anna valtion nimi:”(给国家名称),并完成程序(BUILD SUCCESSFUL),没有机会进入新的国家......

1 个答案:

答案 0 :(得分:4)

您必须在nextLine之后添加nextInt以使用包含该int的其余行:

    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);
        lukija.nextLine();
    }