0
import java.util.*;

class token {
public static void main(String args[]){
    Scanner input = new Scanner(System.in);
    Random number = new Random();

    System.out.println("Do you want to play again(y/n)? ");
    String in = input.nextLine();   

    do{
    int num1,num2,sum;
    num1 = 1+number.nextInt(6);
    num2 = 1+number.nextInt(6);

    sum = num1 + num2;


    System.out.print("Dice 1: "+num1);
    System.out.print("\nDice 2: "+num2);
    System.out.print("\nSum: "+sum);

    if(sum%2==1){
        System.out.println("\nYou have lost 1 token.");
    }else if(sum>10){
        System.out.println("\nYou have won 2 tokens.");
    }else if(sum>11){
        System.out.println("\nYou have won 2 tokens.");
    }else if(sum>12){
        System.out.println("\nYou have won 2 tokens.");
    }else{
        System.out.println("\nYou have won 1 token.");
    }

    System.out.println("Do you want to play again(y/n)? ");
    String in1 = input.nextLine();  
    }while(in == "y");

}
}

そのため、do while ループを使用しようとしましたが、残念ながらまったくループしません。出力例: もう一度再生しますか (y/n)? y サイコロ 1: 3 サイコロ 2: 4 合計: 7 トークンを 1 つ失いました。もう一度プレイしますか (y/n)? y

ユーザーが n を入力しない限り、プログラムを継続的にループさせたい。

4

4 に答える 4

2

in == "y"と置き換えます in.equals("y")

String in1 = input.nextLine();in = input.nextLine();

値を更新していないinため、入力が初めて「y」の場合、永久にループするか、それ以外の場合は1回だけ実行されます。

于 2013-10-30T17:03:22.687 に答える
0

while ループで繰り返し入力を取得し、終了条件を設定する必要があります。

String in = input.nextLine();
do {
    /* conditional logic */
    in = input.nextLine();
} while (in.equals("y"));

ループ内で毎回新しい文字列に設定しているため、次のシーケンスでは使用されません。

于 2013-10-30T17:05:01.950 に答える
0

使用する代わりに

while(in == "y");

あなたが使用する必要があります:

while(in.equals("y"));

== 演算子が参照をテストしています。

equals は実際に文字列の内容をチェックします。

于 2013-10-30T17:05:16.240 に答える
0

使用する必要があります

while(!in.equalsIgnoreCase("n"));

于 2013-10-30T17:21:18.317 に答える