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)? 是的

我希望我的程序不断循环,除非用户输入 n。

4

4 回答 4

2

替换 in == "y"in.equals("y")

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

因为你没有更新值in所以如果输入是“y”第一次它会永远循环,否则只会运行一次。

于 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

你应该使用

而(!in.equalsIgnoreCase(“n”));

于 2013-10-30T17:21:18.317 回答