-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 回出力されます。while(lokke)

問題を解決するには、2 番目の 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それをあなたに割り当てるからです。これnavnが 100 回も表示されるようになりました。これは、多くの空白行として考えられることです。

于 2013-10-15T09:25:49.790 に答える