我一直在尝试复制名为 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/