如何防止用户重复输入相同的号码

我正在用 java 创建一个程序,用户必须猜测计算机生成的随机数,用户总共有 20 次尝试猜测这个数字,如果用户重复输入相同的数字,它应该显示一条错误消息并且没有计数作为他们的猜测之一,但我不确定如何做到这一点。例如,如果用户第一次猜测是 5,然后他们再次猜测 5,则会出现一条错误消息,提示“您已经输入了这个数字


package guessinggame2;

import java.util.Scanner;


public class GuessingGame2 {


  static Scanner kboard = new Scanner(System.in);


  public static void main(String args[]) // start of main 

  {

    System.out.println("Welcome to the guessing game, the computer will 

    generate a random number that you have to guess, good luck!");


    int secret_number = 0;

    int number_of_guesses = 0;

    Scanner input = new Scanner(System.in);

    int user_guess;

    int used_number = 0;


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

    System.out.println("The computer has generated it's number");


    for(int i=0; i<20;i++) {


      System.out.println("Please make your guess");

      user_guess = kboard.nextInt();

      number_of_guesses++;


      if (user_guess == secret_number)

      {

        System.out.println("Your guess is correct it took you " + 

        number_of_guesses + " guesses");

      }


      else if  (user_guess < secret_number)

      {

        System.out.println("Your guess is too low try again");

      }


      else if (user_guess > secret_number)

      {

        System.out.println("Your guess is too high try again");

      }


      System.out.println (20 - number_of_guesses + " Guesses remaining"); 

    }

  }

}


婷婷同学_
浏览 120回答 3
3回答

MYYA

使用 ArrayList 创建一个数组并为其命名(例如“entered_numbers”)ArrayList<Integer> entered_numbers = new ArrayList<Integer>();2. 每次用户输入一个数字时,使用检查contains()该数字是否在ArrayList 中。如果是,请显示您的消息(不要number_of_guesses++)如果不是,请使用添加它add()并继续您自己的检查。if(entered_numbers.contains(user_guess)) {&nbsp; &nbsp; System.out.println("You have already entered this number");&nbsp; &nbsp; continue;} else {&nbsp; &nbsp; entered_numbers.add(user_guess);&nbsp; &nbsp; // Check if == secret number,&nbsp; &nbsp; // Check if < secret number,&nbsp; &nbsp; // Check if > secret number}其他人建议使用HashSets哪个对性能更好。使用 ArrayList 的复杂度是 O(n),而 HashSet 是 O(1)。我选择了一种使用 ArrayList 的更简单的方法,它不会对性能产生太大影响,因为您不会在 ArrayList 中存储大量数据。在此处查看有关复杂性的更多信息:https ://www.baeldung.com/java-collections-complexity

湖上湖

要研究的关键字:数组。只需将用户的所有数字存储到这样的数组中。然后,您可以在每次给出新数字时迭代该数组。当您在该数组中找到该数字时,您可以打印错误消息。或者,您可以使用HashSet来存储以前输入的数字。集合有一个很好的方法contains(),它避免了数组的重复循环。但是HashSet之类的集合类有点高级,新手通常的做法是基于数组的解决方案。

慕的地6264312

您可以使用一组来跟踪用户提交的数字,例如public class GuessingGame2 {&nbsp; &nbsp;static Scanner kboard = new Scanner(System.in);&nbsp; &nbsp;public static void main(String args[]) // start of main&nbsp; &nbsp;{&nbsp; &nbsp; &nbsp; System.out.println("Welcome to the guessing game, the computer will generate a random number that you have to guess, good luck!");&nbsp; &nbsp; &nbsp; int secret_number = 0;&nbsp; &nbsp; &nbsp; int number_of_guesses = 0;&nbsp; &nbsp; &nbsp; Scanner input = new Scanner(System.in);&nbsp; &nbsp; &nbsp; int user_guess;&nbsp; &nbsp; &nbsp; int used_number = 0;&nbsp; &nbsp; &nbsp; HashSet<Integer> user_inputs = new HashSet<>();&nbsp; &nbsp; &nbsp; secret_number = (int) (Math.random() * 100) + 1;&nbsp; &nbsp; &nbsp; System.out.println("The computer has generated it's number");&nbsp; &nbsp; &nbsp; for (int i = 0; i < 20; i++) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;System.out.println("Please make your guess");&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;user_guess = kboard.nextInt();&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (!user_inputs.add(user_guess)) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println("Please provide another input");&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; continue;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;number_of_guesses++;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if (user_guess == secret_number) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println("Your guess is correct it took you " +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; number_of_guesses + " guesses");&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} else if (user_guess < secret_number) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println("Your guess is too low try again");&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;} else if (user_guess > secret_number) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println("Your guess is too high try again");&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;}&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;System.out.println(20 - number_of_guesses + " Guesses remaining");&nbsp; &nbsp; &nbsp; }&nbsp; &nbsp;}}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java