-1

我有一个我一直在研究的小程序,它应该向用户询问一个名称,它会打印 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;
            }
        }
    }
}
4

2 回答 2

2

你有一个重复的 100 次 bucle 做同样的事情。

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

因此,如果在第一个之后,您选择“j”,它将打印 navn 200 次,一个用于第二个 bucle,另一个时间从while(lokke)

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

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;
            }
        }
    }
}
于 2013-10-15T09:22:58.350 回答
2
char valg = input.next().charAt(0);

将其更改为

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

因为当您j按下回车键时,navn=input.nextLine();内部if会消耗该击键并将navn其分配给您。现在再次打印 100 次,这navn就是您认为的很多空白行

于 2013-10-15T09:25:49.790 回答