当应该没有时,我的程序会打印很多空白行

时间:2013-10-15 09:19:22

标签: java loops printing

我有这个小程序,我一直在努力,它应该询问用户一个名字,它打印100次,然后它会询问是否肯定会给另一个名字再做一次。然而,这对我有用;当我被问到是否要再次这样做时,会打印出很多空白行,任何人都可以给我一个提示,说明为什么会这样?

import java.util.*;

class Uke44{
    public static void main(String[]args){

        Scanner input=new Scanner(System.in);
        boolean lokke=true;

        while(lokke){

            System.out.println("Vennligst oppgi navn: ");
            String navn=input.nextLine();   

            for(int i=0; i<100; i++){
                System.out.println(navn);
            }

            System.out.println("Gi et nytt navn? j/n: ");
            char valg = input.next().charAt(0);

            if(valg=='j'){
                System.out.println("Vennligst oppgi navn: "); //The problem must lie around here I think.
                navn=input.nextLine();  

                for(int i=0; i<100; i++){
                System.out.println(navn);
                }

            }else{
                lokke=false;
            }
        }
    }
}

2 个答案:

答案 0 :(得分:2)

你有100次重复的bucle也是如此。

for(int i=0; i<100; i++){
        System.out.println(navn);
    }

所以,如果在第一个之后,你选择'j'它将打印导航200次,一个用于第二个bucle,另一个时间从while(lokke)再次输入

要解决您的问题,请删除第二个代码,您的代码将显示:

import java.util.*;

class Uke44{
    public static void main(String[]args){

        Scanner input=new Scanner(System.in);
        boolean lokke=true;

        while(lokke){

            System.out.println("Vennligst oppgi navn: ");
            String navn=input.nextLine();   

            for(int i=0; i<100; i++){
                System.out.println(navn);
            }

            System.out.println("Gi et nytt navn? j/n: ");
            char valg = input.next().charAt(0);

            if(valg!='j'){
                lokke=false;
            }
        }
    }
}

答案 1 :(得分:2)

char valg = input.next().charAt(0);

将此更改为

char valg = input.nextLine().charAt(0);

因为当您提供j并按Enter键时,navn=input.nextLine();内的if正在消耗该按键并为您分配navn。此navn现在再次打印100次,这就是您认为很多空行