【问题标题】:Making a guessing program, need it to remember if I have guessed that number制作一个猜谜程序,需要它记住我是否猜到了那个数字
【发布时间】:2017-12-18 20:19:40
【问题描述】:

我正在制作一个简单的猜测程序。猜数字 1-20,如果你猜错了,它应该不会再打印那个数字了。但是它仍在这样做,我需要帮助弄清楚如何让它记住这一点。

请不要责备我,我是编程新手。 =)

这里是代码朋友:

import java.util.Scanner;

public class TG_UN5EX5 {

    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);

        int characternumber = 0;

        int characterrandom = (int) (Math.random() * (100 + 1 - 1) + 1);

        int[] list = new int[20];

        int e = 0;

        int random = (int) (Math.random() * (20 - 1 + 1) + 1);

        int guesstimes = 5;

        int guess = 0;

        int guessed = 0;

        while (guess != random && guesstimes > 0) {
            for (int b = 0; b < list.length; b++) {
                e++;
                list[b] = e;

                if (guess == e)
                    list[e] = -1;
                if (e >= 20)
                    e = 0;

                if (list[e] != -1)
                    System.out.print("[" + list[b] + "] ");
            }

            System.out.print("What is the number?");
            guess = scan.nextInt();

            if (guess > random)
                System.out.println("Too High!");

            else if (guess < random)
                System.out.println("Too Low!");

            else
                System.out.println("You got it!");

            guesstimes--;
        }

        if (guess != random)
            System.out.println("Game over! \n You ran out of tries!");

        else
            System.out.println("You won!");

    }
}

【问题讨论】:

    标签: java arrays memory


    【解决方案1】:

    尝试用 Set 替换您的数组。它们将帮助您使用 .contains() 等方法跟踪之前的猜测。设置 Set 的类型时使用 Integer 对象而不是 int 原语。

    final Set<Integer> guesses = new HashSet<>();
    

    【讨论】:

      【解决方案2】:

      您可以在声明变量列表后对其进行初始化:

      int[] list = new int[20];
      for (int b = 0; b < list.length; b++) {
       list[b] = b+1; 
      } 
      

      然后将你的 for 循环重写为:

      for (int b = 0; b < list.length; b++) {
       if (guess == list[b]) 
          list[b] = -1; 
      if (list[b] != -1) 
          System.out.print("[" + list[b] + "] "); }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多