java - 如何一次将用户输入与多个变量进行比较?

标签 java arrays

我一直在尝试复制名为 mastermind 的游戏的基本程序。到目前为止,我已经能够获得 4 个数据点和 4 个用户输入作为整数,但是我在比较 4 个数据点和 4 个用户输入时遇到了问题。目标是有 4 个 rngs(范围从 1-9)并且用户一次猜 4 个数字。给他的唯一提示是一个数字是正确的。到目前为止,我已经能够制作一个低效的代码,该代码设置为比较 4 个变量,ex(a=rng1, b=rng2, c=rng3, d=rng4) 和类似的用户输入。我如何有效地将用户输入与所有已生成的 rng 进行比较。在这种情况下,我希望能够将 s1 与 poop 进行比较;便便2;大便3;和 poop4。我不想为此再写 100 行代码。提前致谢。代码如下。

import java.util.*;
public class RandomNumberGenerator{;
private static Scanner in;
public static void main(String[] args){
  Random r = new Random();
  float s;
  in = new Scanner(System.in);
  int poop = (r.nextInt(10-1)+1);
  int poop1 = (r.nextInt(10-1)+1);
  int poop2 = (r.nextInt(10-1)+1);
  int poop3 = (r.nextInt(10-1)+1);
for (int i = 0; i < 80; i++)
{
System.out.println("Enter a number from 1-9");
s = in.nextFloat();
float s1 = in.nextFloat();
float s2 = in.nextFloat();
float s3 = in.nextFloat();

if(poop == s && poop1 == s1 && poop2 == s2 && poop3 == s3) {
    System.out.println("You are correct HeHe XD");
    break;
    }
if(poop > s && poop1 == s1 && poop2 == s2 && poop3 == s3){
    System.out.println("You have 1 wrong");
}
if(poop < s && poop1 == s1 && poop2 == s2 && poop3 == s3){
    System.out.println("You have 1 wrong");
}
if(poop > s && poop1 == s1 && poop2 == s2 && poop3 == s3){
    System.out.println("You have 1 wrong");
}
if(poop == s && poop1 > s1 && poop2 == s2 && poop3 == s3){
    System.out.println("You have 1 wrong");
}
if(poop == s && poop1 < s1 && poop2 == s2 && poop3 == s3){
    System.out.println("You have 1 wrong");
}
if(poop == s && poop1 == s1 && poop2 > s2 && poop3 == s3){
    System.out.println("You have 1 wrong");
}
if(poop == s && poop1 == s1 && poop2 < s2 && poop3 == s3){
    System.out.println("You have 1 wrong");
}
if(poop == s && poop1 == s1 && poop2 == s2 && poop3 > s3){
    System.out.println("You have 1 wrong");
}
if(poop == s && poop1 == s1 && poop2 == s2 && poop3 < s3){
    System.out.println("You have 1 wrong");
}
if(poop != s && poop1 != s1 && poop2 == s2 && poop3 == s3){
    System.out.println("You have 2 wrong");
}
if(poop != s && poop1 == s1 && poop2 != s2 && poop3 == s3){
    System.out.println("You have 2 wrong");
}
if(poop != s && poop1 == s1 && poop2 == s2 && poop3 != s3){
    System.out.println("You have 2 wrong");
}
if(poop == s && poop1 != s1 && poop2 != s2 && poop3 == s3){
    System.out.println("You have 2 wrong");
}
if(poop == s && poop1 != s1 && poop2 == s2 && poop3 != s3){
    System.out.println("You have 2 wrong");
}
if(poop == s && poop1 != s1 && poop2 != s2 && poop3 != s3){
    System.out.println("You have 3 wrong");
}
if(poop != s && poop1 == s1 && poop2 != s2 && poop3 != s3){
    System.out.println("You have 3 wrong");
}
if(poop != s && poop1 != s1 && poop2 == s2 && poop3 != s3){
    System.out.println("You have 3 wrong");
}
if(poop != s && poop1 != s1 && poop2 != s2 && poop3 == s3){
    System.out.println("You have 3 wrong");
}
if(poop != s && poop1 == s1 && poop2 != s2 && poop3 != s3){
    System.out.println("You have 3 wrong");
}
if(poop != s && poop1 != s1 && poop2 != s2 && poop3 != s3){
    System.out.println("You have 4 wrong");
}

 }

 }
}

最佳答案

您可以使用两个 ArrayList 来存储 4 个数据点和用户输入。然后使用 ArrayList.contains() 进行比较。您不必编写很多 if 条件。引用下面我的代码:

public static void main(String[] args) {
      final int totalPoints = 4;
      Random r = new Random();
      in = new Scanner(System.in);

      ArrayList<Integer> poops = new ArrayList<Integer>(totalPoints);
      ArrayList<Integer> userinputs = new ArrayList<Integer>(totalPoints);

      for (int i=0; i<totalPoints; i++) {
          int poop = (r.nextInt(10-1)+1);
          System.out.println("Random datapoints: " + poop);
          poops.add(poop);
      }


      System.out.println("Enter a number from 1-9");
      for (int i=0; i<totalPoints; i++) {
          int s = in.nextInt();
          userinputs.add(s);
      }

      int correct = 0;
      for (int i=0; i<4; i++) {
          if (poops.contains(userinputs.get(i))) {
              correct++;
          }
      }

      System.out.println("You have " + correct + "correct numbers");

}

关于java - 如何一次将用户输入与多个变量进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39303212/

相关文章:

java - HTTP POST 将 @ 转换为 %40

java - 无法摆脱绘制的线条

c - 在 C 中退出二维数组时出现问题

javascript - 如何从构造函数返回单个数组项

java - 为什么我的 JTextFields 没有调整大小?

java - 将 Java 类注释为安全的以供引用比较

java - 使用 Unmarshal 访问 XML 文档的特定部分

python - 比较多个 numpy 数组

javascript - 在 Javascript 中从 JSON 创建一个数组

javascript - 未知的 JavaScript 错误