Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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 如何将用户输入的6个数字与随机生成的6个数字进行比较,以确定它们是否相同_Java_Arrays - Fatal编程技术网

Java 如何将用户输入的6个数字与随机生成的6个数字进行比较,以确定它们是否相同

Java 如何将用户输入的6个数字与随机生成的6个数字进行比较,以确定它们是否相同,java,arrays,Java,Arrays,对这两个数组进行排序,然后检查它们是否相等。如果是,则它们是相同的: //////////////////////print results //////////////////////restart? System.out.println("Would you like to guess again on the same lotto numbers?"); System.out.printl

对这两个数组进行排序,然后检查它们是否相等。如果是,则它们是相同的:

            //////////////////////print results



            //////////////////////restart?
            System.out.println("Would you like to guess again on the same lotto numbers?");
            System.out.println("1.Yes");
            System.out.println("2.No");

            restarto=scan.nextInt();

        }while(restarto == 1);

    }
}

创建一个6的布尔数组,然后创建一个比较输入和rndNum的循环

Arrays.sort(inputs);
Arrays.sort(elArry);
return (Arrays.equals(inputs, elArry));
boolean[]correct=新布尔[6];
对于(int i=0;i<6;i++){
如果(输入[i]==elArry[i]){
正确的,正确的;
}

有很多方法可以解决这个问题,我想这就是其中之一。

因为两个数组必须以相同的顺序具有相同的值,那么yoy可以检查它们在技术上是否相等

这个类有一个equals方法可以帮你解决这个问题

例子:
如有必要,仅知道所有猜测是否正确:

if (Arrays.equals(inputs, elArry)) {
    System.out.println("You won... :)");
} else {
    System.out.println("You were not even close... :(");
}
boolean same=true;
for(int i=0;i
如果您能够像建议的那样为其创建一个方法,那么代码将更漂亮:

boolean same = true;    
for(int i = 0; i < elArry.length; i++) {
    if (elArry[i] != inputs[i]) {
        same = false;
        break;
    }
System.out.println(same? "You have guessed correctly!" : "You guessed wrong!");
private静态布尔猜测权限(){
for(int i=0;i
但说实话,您可以在用户输入后直接生成随机数,这将使您的代码更加紧凑:

private static boolean guessedRight() {
    for (int i = 0; i < elArry.length; i++)
        if (elArry[i] != inputs[i]) return false;
    return true;
}
...
System.out.println(guessedRight()? "You have guessed correctly!" : "You guessed wrong!");
boolean same=true;
对于(int i=0;i
如果您对猜测顺序不感兴趣,您可以编写一个循环来检查输入数组的第i个条目是否也包含在elArray中:

boolean same = true;
for(int i = 0; i < inputs.length; i++) {
    inputs[i] = scan.nextInt();
    if(inputs[i] != random.nextInt()) same = false;
    //there is no reason to generate double if the user guesses with ints
}
//if same is false, at least one number was not guessed right
int计数器=0;
对于(int i=0;ix==输入[i])){
计数器+=1;
}
}

现在计数器变量包含正确猜测的数字量。您也可以修改它以跟踪哪些数字是正确的。

我将使用
int[]
而不是
double[]
。一种方法是对两个数组进行排序并检查结果是否相同。我建议您为数组大小(
6
常量)设置一个
final int
)。使用这两个数组时,您可以使用此常量,而不必担心ArrayIndexOutofBoundsCeption改进格式抖动、中断。将其设为方法,并让该方法返回。
private static boolean guessedRight() {
    for (int i = 0; i < elArry.length; i++)
        if (elArry[i] != inputs[i]) return false;
    return true;
}
...
System.out.println(guessedRight()? "You have guessed correctly!" : "You guessed wrong!");
boolean same = true;
for(int i = 0; i < inputs.length; i++) {
    inputs[i] = scan.nextInt();
    if(inputs[i] != random.nextInt()) same = false;
    //there is no reason to generate double if the user guesses with ints
}
//if same is false, at least one number was not guessed right
int counter = 0;
for(int i = 0; i < inputs.length; i++) {
    if (IntStream.of(elArray).anyMatch(x -> x == inputs[i])) {
        counter += 1;
    }
}