Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:两位数彩票_Java - Fatal编程技术网

Java:两位数彩票

Java:两位数彩票,java,Java,我正在编写这个彩票代码,但却经历了无休止的运行。我希望能指出代码中可能存在的问题以及如何着手纠正它。非常感谢。问题是“生成两位数的彩票。数字中的两位数是不同的。(提示:生成第一位数。使用循环连续生成第二位数,直到它与第一位数不同。) 你想让他们与众不同,所以改变吧 while (lotterydigit2!=lotterydigit1){ lotterydigit2 = lottery%10; } 到 lotterydigit2

我正在编写这个彩票代码,但却经历了无休止的运行。我希望能指出代码中可能存在的问题以及如何着手纠正它。非常感谢。问题是“生成两位数的彩票。数字中的两位数是不同的。(提示:生成第一位数。使用循环连续生成第二位数,直到它与第一位数不同。)


你想让他们与众不同,所以改变吧

   while (lotterydigit2!=lotterydigit1){
              lotterydigit2 = lottery%10;
                }


lotterydigit2始终具有相同的值。如果彩票%10在第一次运行时是!=到lotterydigit1,它将不会退出循环,因为您没有更改任何内容。

问题的答案在您的提示中:

使用循环连续生成第二个数字,直到它与第一个数字不同

public class Lottery1 {

    public static void main(String[] args) {
        // Create  Scanner
        Scanner s = new Scanner(System.in);
        //generate 2 digit random  lottery  number
        int lottery = (int) (Math.random() * 100);
        // TODO code application logic here
        //generate first and second digit of lottery
        int lotterydigit1 = lottery / 10;
        int lotterydigit2 = lottery % 10;
        while (lotterydigit2 != lotterydigit1) {
            lotterydigit2 = lottery % 10;
        }

        //prompt user for guess digits 
        System.out.print("Enter two Digit  number:");
        int guess = s.nextInt();
        int guessdigit1 = guess / 10;
        int guessdigit2 = guess % 10;

        // compare lottery and 
        if (guessdigit1 == lotterydigit1 && guessdigit2 == lotterydigit2) {
            System.out.println("You  just won $10,0000");
        } else if (guessdigit1 == lotterydigit2 && guessdigit2 == lotterydigit1) {
            System.out.println("You  have  won $5,000");
        } else if (guessdigit1 == lotterydigit1
                || guessdigit1 == lotterydigit2
                || guessdigit2 == lotterydigit1
                || guessdigit2 == lotterydigit2) {
            System.out.println("You have won $1,000");
        } else {
            System.out.println("You  have  not won anything");
        }
        System.out.println("lottery number is" + " " + lottery + " and     your  guess is" + guess);
    }

}
并且在循环中不会生成任何内容:

while (lotterydigit2 != lotterydigit1) {
    lotterydigit2 = lottery % 10;
}
你也有错误的条件-“直到它是不同的”意思是“当他们是相同的”

我建议分别生成两个数字:

int lotterydigit1 = (int) (Math.random() * 10);
int lotterydigit2 = (int) (Math.random() * 10);
while (lotterydigit2 == lotterydigit1) {
    lotterydigit2 = (int) (Math.random() * 10);
}

尝试将
lotket=(int)(Math.random()*100);
放在while循环中-你永远不会更改它的设置!你的代码中有编译错误,正确格式化它也会有帮助
while(lotterydigit2!=lotterydigit1)
当然也希望
while(lotterydigit2==lotterydigit1)
?如果它们相似,您只想更改
lotterydigit2
while (lotterydigit2 != lotterydigit1) {
    lotterydigit2 = lottery % 10;
}
int lotterydigit1 = (int) (Math.random() * 10);
int lotterydigit2 = (int) (Math.random() * 10);
while (lotterydigit2 == lotterydigit1) {
    lotterydigit2 = (int) (Math.random() * 10);
}