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),而没有机会进入新的国家/地区。

最佳答案

您必须在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();
    }

09-10 06:41
查看更多