Java 如何防止用户重复输入同一号码
我正在用java创建一个程序,用户必须猜测计算机生成的一个随机数,用户总共有20次尝试来猜测这个数字,如果用户重复输入同一个数字,它将显示一条错误消息,并且没有计数作为他们的猜测之一,但不确定如何做到这一点。例如,如果用户第一次猜测为5,并且他们再次猜测为5,则应显示一条错误消息,说明“您已经输入了此数字Java 如何防止用户重复输入同一号码,java,validation,Java,Validation,我正在用java创建一个程序,用户必须猜测计算机生成的一个随机数,用户总共有20次尝试来猜测这个数字,如果用户重复输入同一个数字,它将显示一条错误消息,并且没有计数作为他们的猜测之一,但不确定如何做到这一点。例如,如果用户第一次猜测为5,并且他们再次猜测为5,则应显示一条错误消息,说明“您已经输入了此数字 package guessinggame2; import java.util.Scanner; public class GuessingGame2 { static Scanner
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");
}
}
}
包猜游戏2;
导入java.util.Scanner;
公开课猜谜游戏2{
静态扫描仪kboard=新的扫描仪(System.in);
公共静态void main(字符串args[])//main的开始
{
欢迎来到猜谜游戏,电脑会
生成一个你必须猜测的随机数,祝你好运!”;
int secret_number=0;
猜测的整数=0;
扫描仪输入=新扫描仪(System.in);
int用户猜;
整数=0;
秘密数=(int)(Math.random()*100)+1;
System.out.println(“计算机已生成其编号”);
for(int i=0;i机密号)
{
System.out.println(“您的猜测太高,请重试”);
}
System.out.println(20-猜测次数+剩余猜测次数);
}
}
}
要研究的关键字:
只需将用户的所有数字存储到这样一个数组中。然后,每次给出新数字时,您都可以迭代该数组。当您在该数组中找到该数字时,您可以打印错误消息
或者,您可以使用存储以前输入的数字。集合有一个很好的方法contains(),它可以避免数组的重复循环。但是集合类(如HashSet)有点高级,新手的通常做法是基于数组的解决方案。要研究的关键字:
只需将用户的所有数字存储到这样一个数组中。然后,每次给出新数字时,您都可以迭代该数组。当您在该数组中找到该数字时,您可以打印错误消息
或者,您可以使用存储以前输入的数字这避免了数组的重复循环。但是集合类(如HashSet)有点高级,新手的通常做法是基于数组的解决方案。您可以使用集合来跟踪用户提交的数字,例如
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;
HashSet<Integer> user_inputs = new HashSet<>();
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();
if (!user_inputs.add(user_guess)) {
System.out.println("Please provide another input");
continue;
}
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");
}
}
}
公共类猜测游戏2{
静态扫描仪kboard=新的扫描仪(System.in);
公共静态void main(字符串args[])//main的开始
{
System.out.println(“欢迎来到猜谜游戏,计算机将生成一个你必须猜的随机数,祝你好运!”);
int secret_number=0;
猜测的整数=0;
扫描仪输入=新扫描仪(System.in);
int用户猜;
整数=0;
HashSet user_inputs=新HashSet();
秘密数=(int)(Math.random()*100)+1;
System.out.println(“计算机已生成其编号”);
对于(int i=0;i<20;i++){
System.out.println(“请猜一猜”);
user_guess=kboard.nextInt();
如果(!user_inputs.add(user_guess)){
System.out.println(“请提供另一个输入”);
继续;
}
猜测次数++;
if(用户猜测==秘密号码){
System.out.println(“你的猜测是正确的,它花了你的时间”+
猜测次数+猜测次数);
}else if(用户猜测<秘密号码){
System.out.println(“您的猜测太低,请重试”);
}else if(用户猜测>密码){
System.out.println(“您的猜测太高,请重试”);
}
System.out.println(20-猜测次数+剩余猜测次数);
}
}
}
您可以使用集合来跟踪用户提交的数字,例如
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;
HashSet<Integer> user_inputs = new HashSet<>();
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();
if (!user_inputs.add(user_guess)) {
System.out.println("Please provide another input");
continue;
}
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");
}
}
}
公共类猜测游戏2{
静态扫描仪kboard=新的扫描仪(System.in);
公共静态void main(字符串args[])//main的开始
{
System.out.println(“欢迎来到猜谜游戏,计算机将生成一个你必须猜的随机数,祝你好运!”);
int secret_number=0;
猜测的整数=0;
扫描仪输入=新扫描仪(System.in);
int用户猜;
整数=0;
HashSet user_inputs=新HashSet();
秘密数=(int)(Math.random()*100)+1;
System.out.println(“计算机已生成其编号”);
对于(int i=0;i<20;i++){
System.out.println(“请猜一猜”);
user_guess=kboard.nextInt();
如果(!user_inputs.add(user_guess)){
System.out.println(“请提供另一个输入”);
继续;
}
猜测次数++;
if(用户猜测==秘密号码){
System.out.println(“你的猜测是正确的,它花了你的时间”+
猜测次数+猜测次数);
}else if(用户猜测<秘密号码){
System.out.println(“您的猜测太低,请重试”);
}else if(用户猜测>密码){
System.out.println(“您的猜测太高,请重试”);
}
System.out.println(20-猜测次数+剩余猜测次数);
}
}
}
其他人建议使用
hashset
,这对性能更有利。
使用ArrayList的复杂性为O(n),而HashSet为O(1)。
我选择了一种使用ArrayList更简单的方法,它不会对性能产生太大影响,因为您不会在ArrayList中存储太多数据。
有关复杂性的更多信息,请参见此处:
其他人建议使用
hashset
,这是一个很好的选择
if(entered_numbers.contains(user_guess)) {
System.out.println("You have already entered this number");
continue;
} else {
entered_numbers.add(user_guess);
// Check if == secret number,
// Check if < secret number,
// Check if > secret number
}