-1

while ループに問題があります。プログラムはユーザーに名前を尋ね、ユーザーが入力を行った後、プログラムは入力を何回印刷するかを尋ねます。

私はかなり長い間 while ループで立ち往生しており、次のようなことをした場合にのみ動作させることができます:} while (antal > some random number)

package uppg2;

import java.util.Scanner;

public class Uppg2 {

    public static void main(String[] args) {

        Scanner name = new Scanner(System.in);
        Scanner ant = new Scanner(System.in);
        int antal;
        String namn;
        System.out.print("Whats your name?: ");
        namn = name.nextLine();

        System.out.print("How many times u wanna print ur name?: ");
        antal = ant.nextInt();
        do {

            System.out.print(namn);

        } while (????);
        antal++;
        namn = null;
        antal = 0;
    }
}
4

6 に答える 6

3

個人的には、次のように for ループを使用します。

for(int i = 0 ; i < antal; i++){
    System.out.println(namn);
}
于 2013-02-06T20:36:33.070 に答える
2

これは、他の人が提案したように、for ループの使用例です。ただし、while ループの使用を主張する場合:

int counter = 0; // a variable which counts how often the while loop has run

do {
    System.out.print( namn ); // do what you want to do
    counter++                 // increase the counter
} while (counter < antal)     // check if the desired number of iterations is reached

ループが終了したときにの値が不要になった場合はantal、カウンター変数を使用せずに、ループごとに antal を減らして、0 に達したかどうかを確認することもできます。

do {
    System.out.print( namn );
    antal--;
} while (antal > 0)
于 2013-02-06T20:39:58.553 に答える
2

1になるまでカウントダウンantalantal--)できます。ただし、値を破棄してもよいかどうかはわかりませんantal

于 2013-02-06T20:36:42.477 に答える
1

do-while ループ内でインクリメントされるカウンターを用意し、その値に対して比較を実行する必要があります。

それはあなたのループループを次のようにします:

antal = ant.nextInt();
int i = 0;
do{ 

            System.out.print( namn );
            i++; 

    }while (i < antal);

これは do-while ループであるため、ユーザーがゼロを入力した場合でも、少なくとも 1 回は常に名前を出力することに注意してください。これを防ぐには、他の回答者が説明したように for または while ループを使用するか、System.out.println呼び出しの周りに if 条件を使用して antal がゼロかどうかを確認する必要があります。

また、最後にどんなアンタルがあるか気にしない場合は、TofuBeer のソリューションを使用できます。

于 2013-02-06T20:40:54.903 に答える
1
package uppg2;

import java.util.Scanner;

public class Uppg2 {

public static void main(String[] args) {

    final Scanner in = new Scanner(System.in);
    int antal;
    String namn;
    System.out.print("Whats your name?: ");
    namn = in.nextLine();

    System.out.print("How many times u wanna print ur name?: ");
    antal = in.nextInt();
    int i = 0;
    while(i < antal){

            System.out.print( namn );
            i++;

    }
    in.close();
}
}

それが機能するかどうか教えてください。基本的に、必要な回数だけ出力されるようにするには、インクリメント カウンターが必要です。0 からカウントを開始するので、印刷時間と等しくなるまでは確実に進む必要はありませんが、印刷時間よりも下にある間だけです。

于 2013-02-06T20:36:54.077 に答える
0

同様の問題の解決策を次に示します。それを問題に変換できないかどうかを確認してください。

// How many times to I want to do something?
int max = 40;
for (int i = 0; i < max; i++) {
    // Do something!
}
于 2013-02-06T20:35:28.387 に答える