簡體   English   中英

有多少嘗試猜測

[英]How many tries to guess

我有一個彩票程序,我想讓我猜一猜“中獎”號碼,然后生成所述號碼。 完成后,它將把這些數字打印回我,並告訴我要進行幾次嘗試才能得出正確的答案。

我的代碼如下。 我以為我已經從另一個線程得到了答案,所以確定關閉了它-現在找不到了。 我的問題實際上只是“我的代碼有什么問題?” 類型,因為我認為代碼可以正常工作,但是由於數組是6個數字,因此我認為這將花費一些時間。

出於這個原因,我將數組更改為僅1個數字,直到返回“您在...中猜到了它!”仍然花了很長時間。 使我相信我還缺少其他問題。

package lottery;

import java.util.Scanner;

public class lottery { // Begin lottery class
    public static void main(String[] args) { // Begin MAIN method

        // Define variables
        Scanner keyboard = new Scanner(System.in);
        int[] lottery = new int[6];
        int randomNum = 1 + (int) Math.random() * 59;
        int noTimes = 1;
        int guess = 0;
        // End variable definition

        System.out.println("Generating lottery numbers, what is your guess?");
        while (guess != randomNum) {
            guess = keyboard.nextInt();
            guess++;
        }

        // Input received - generate numbers now
        System.out.println("Thank you. Generating lottery numbers now...");

        for (int i = 0; i < 6; i++) {
            randomNum = (int) Math.ceil(Math.random() * 59); // Random number created here.
            for (int x = 0; x < i; x++) {
                if (lottery[x] == randomNum) // Here, code checks if same random number generated before.
                {
                    randomNum = (int) Math.ceil(Math.random() * 59);// If random number is same, another number generated.
                    x = -1; // restart the loop
                }

            }
            lottery[i] = randomNum;
        }

        for (int j = 0; j < noTimes; j++) {
            for (int i = 0; i < lottery.length; i++) {
                System.out.print("The winning numbers are: " + lottery[i] + " ");
            }
            System.out.println("\n");
            System.out.print("You correctly guessed in " + guess + " tries.");
        }
    } // End MAIN method   
} // End Lottery class

顯然,我不知道如何進行常規代碼標記? 顏色?

您的代碼中存在各種問題,下面將對此進行說明。

  1. 要生成介於1到59(含)之間(但不是60)的隨機整數,請在以下3個地方使用以下代碼段:

     int randomNum = 1 + (int)(Math.random() * 59); 
  2. 猜測檢查邏輯需要固定(如下所述):

     int noTimes = 0; // Corrected ... while (guess != randomNum) { guess = keyboard.nextInt(); noTimes++; // Corrected } 
  3. 最后一對for循環(連續3次打印之前的循環)看起來很奇怪。 這是一個更明智的替代方法:

     System.out.print("The winning numbers are:"); for (int i = 0; i < lottery.length; i++) { System.out.print(" " + lottery[i]); } System.out.println(); System.out.println("You correctly guessed in " + noTimes+ " tries."); 

除此之外,到目前為止,您的代碼對我來說還不錯。

PS:從59個元素中選擇6個已訂購商品有324億種可能性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM