如何将这个程序放在java的循环中?

时间:2013-10-30 17:02:05

标签: java

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循环但不幸的是,它根本不循环。 样本输出: 你想再玩一次(是/否)? 的ý 骰子1:3 骰子2:4 总和:7 你丢失了1个令牌。 你想再玩一次(是/否)? 的ý

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

4 个答案:

答案 0 :(得分:2)

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

带有String in1 = input.nextLine();

in = input.nextLine();

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

答案 1 :(得分:0)

你应该在while循环中重复输入,然后有一个终止条件:

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

你拥有它的方式是每次在循环中将它设置为一个新的字符串,这将导致它不会在下一个序列中使用。

答案 2 :(得分:0)

而不是使用

while(in == "y");

你应该使用:

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

==运算符正在测试引用。

equals实际上会检查字符串的内容。

答案 3 :(得分:0)

你应该使用

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