Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何一次将用户输入与多个变量进行比较?_Java_Arrays - Fatal编程技术网

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

Java 如何一次将用户输入与多个变量进行比较?,java,arrays,Java,Arrays,我一直在尝试一个基本的程序,它复制了游戏《智囊团》。到目前为止,我已经能够得到4个数据点,4个用户输入作为一个整数,但是我在比较4个数据点和4个用户输入时遇到了一个问题。目标是有4个RNG(范围从1到9),用户一次猜4个数字。他得到的唯一提示是一个数字是正确的。到目前为止,我已经能够生成一个低效的代码,设置为比较4个变量,例如(a=rng1,b=rng2,c=rng3,d=rng4)和用户输入。如何有效地将用户输入与已生成的所有RNG进行比较;poop2;poop3;还有便便。我不想再为此编写1

我一直在尝试一个基本的程序,它复制了游戏《智囊团》。到目前为止,我已经能够得到4个数据点,4个用户输入作为一个整数,但是我在比较4个数据点和4个用户输入时遇到了一个问题。目标是有4个RNG(范围从1到9),用户一次猜4个数字。他得到的唯一提示是一个数字是正确的。到目前为止,我已经能够生成一个低效的代码,设置为比较4个变量,例如(a=rng1,b=rng2,c=rng3,d=rng4)和用户输入。如何有效地将用户输入与已生成的所有RNG进行比较;poop2;poop3;还有便便。我不想再为此编写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");
}

 }

 }
}
import java.util.*;
公共类RandomNumberGenerator{;
专用静态扫描仪;
公共静态void main(字符串[]args){
随机r=新随机();
浮子;
in=新扫描仪(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);
对于(int i=0;i<80;i++)
{
System.out.println(“输入1-9之间的数字”);
s=in.nextFloat();
float s1=in.nextFloat();
float s2=in.nextFloat();
float s3=in.nextFloat();
如果(poop==s&&poop1==s1&&poop2==s2&&poop3==s3){
System.out.println(“你是对的,呵呵XD”);
打破
}
如果(poop>s&&poop1==s1&&poop2==s2&&poop3==s3){
System.out.println(“您有1个错误”);
}
如果(poops&&poop1==s1&&poop2==s2&&poop3==s3){
System.out.println(“您有1个错误”);
}
如果(poop==s&&poop1>s1&&poop2==s2&&poop3==s3){
System.out.println(“您有1个错误”);
}
如果(poop==s&&poop1s2&&poop3==s3){
System.out.println(“您有1个错误”);
}
如果(poop==s&&poop1==s1&&poop2s3){
System.out.println(“您有1个错误”);
}
如果(poop==s&&poop1==s1&&poop2==s2&&poop3
将变量放入
列表
中,然后可以使用
包含
检查
列表中是否有元素
。 事实上,你在《智囊团》中得到了两个数字作为反馈,有多少是正确的数字,有多少在正确的位置。 由于mastermind中可能存在重复项,您可以对原始的
列表
进行
复制
,并针对每个正确的
猜测
将其从
列表
中删除。否则,如果母版
包含该编号,则猜测所有相同的
编号将是正确的

int size = 4;
List<Integer> poops = new ArrayList<>();
for(int i =0; i<size; i++){
    poops.add((r.nextInt(10-1)+1));
}
...
List<Integer> guesses= new ArrayList<>();
for(int i =0; i<size; i++){
   guesses.add(in.nextInt());
}
int correctNumberCount = 0;
List<Integer> poopsCopy = new ArrayList<>(poops);
for(Integer guess: guesses){
    if(poopsCopy.contains(guess)){
        correctNumberCount ++;
        //For handling duplicates
        poopsCopy.remove(guess);
    }   
} 
int correctCount = 0;
int counter = 0;
for(Integer guess: guesses){
    if(guess == poops.get(counter)){
        correctCount++;
    }
    counter++; 
}
//Inform the user about correctNumberCount and correctCount 
int size=4;
List poops=new ArrayList();

对于(inti=0;i您不需要使用名为p1、p2、p3

请后退一步,阅读有关数组的概念

然后创建两个数组(最好使用int;而不是float!)。 第一个数组携带程序想出的4个值;第二个数组填充来自用户的4个值

然后你迭代两个数组,计算“用户”数组中有多少元素在“计算机”数组中给出。真的:你永远都不应该写包含这么多if/else语句的代码。这样的代码绝对不可能读取或维护。永远不要这样做


或者,您可以查看集合,它们是更复杂的数据结构。在您的情况下,您可以使用整数对象的列表/ArrayList。如果您对这些内容感兴趣,请使用您喜欢的搜索引擎并阅读相关内容。

您可以使用两个ArrayList来存储4个数据点和用户输入。然后比较使用
ArrayList.contains()
初始化。如果条件为
,则无需编写大量
。请参阅下面的我的代码:

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");

}
publicstaticvoidmain(字符串[]args){
最终积分总数=4;
随机r=新随机();
in=新扫描仪(System.in);
ArrayList poops=新的ArrayList(totalPoints);
ArrayList userinputs=新的ArrayList(totalPoints);

对于(int i=0;i,根据您的要求,您只需要获得每个输入组合的错误编号,而不需要列出错误的位置。因此,您无需列举所有可能性

您可以尝试下面的代码,
size
是指示输入数量的数字
import java.util.*;

public class RandomNumberGenerator {

    private static Scanner in;

    private static List<Integer> expected = new ArrayList<Integer>();
    private static List<Integer> input = new ArrayList<Integer>();

    static private final int size = 4;

    static int correctNumber = 0;

    public static void check(List<Integer> expected, List<Integer> input) {
        for (int i = 0; i < size; i++) {
            if (expected.get(i) == input.get(i)) {
                correctNumber++;
            }
        }

        if (correctNumber == size) {
            System.out.println("You are correct HeHe XD");
            return;
        } else {
            int wrongNumber = size - correctNumber;
            System.out.println("You have " + wrongNumber + " wrong");
            correctNumber = 0;
        }
    }

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

        int count = size;
        while(count > 0){
            expected.add((r.nextInt(10 - 1) + 1));
            count--;
        }

        for (int i = 0; i < 80; i++) {
            System.out.println("Enter 4 numbers from 1-9");
            count = size;
            while(count > 0){
                input.add(in.nextInt());
                count--;
            }
            check(expected, input);
        }
    }
}
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[] poops = new int[4];
  for(int i=0;i<poops.length;i++){
      poops[i]=r.nextInt(10-1)+1;
  }

float[] s = new float[4];

for (int i = 0; i < 80; i++){
    System.out.println("Enter a number from 1-9");
    int error =0;
    for(int j=0;j<poops.length;j++){
         if(poop[j] != in.nextFloat()){
             error++;
         }
     }
     if(result == 0){
         System.out.println("You are correct HeHe XD");
         break;
     }else{
         System.out.println("You have "+error+" wrong");
     }
 }