Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.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_Android_Android Studio - Fatal编程技术网

如何比较数组中接下来的两个随机值(Java)

如何比较数组中接下来的两个随机值(Java),java,android,android-studio,Java,Android,Android Studio,我正在Android Studio中创建一个简单的游戏。我希望5个不同的图像出现在屏幕中央,每次只有一个。有两个按钮“是”和“否”。当下一个图像与上一个图像匹配时,单击“是”,如果不是“否”,则单击其中一个按钮后图像会发生变化 问题是: 1.我不知道如何比较数组图像[]和下一个图像的随机值。 2.在测试过程中,我发现图像总是不同的。getRandom()方法没有从数组中获取相同索引的选项。这种方法可能有问题 对于任何帮助,非常感谢:) 代码如下: 地理情感活动 package com.praca

我正在Android Studio中创建一个简单的游戏。我希望5个不同的图像出现在屏幕中央,每次只有一个。有两个按钮“是”和“否”。当下一个图像与上一个图像匹配时,单击“是”,如果不是“否”,则单击其中一个按钮后图像会发生变化

问题是: 1.我不知道如何比较数组图像[]和下一个图像的随机值。 2.在测试过程中,我发现图像总是不同的。getRandom()方法没有从数组中获取相同索引的选项。这种方法可能有问题

对于任何帮助,非常感谢:)

代码如下:

地理情感活动

package com.pracainzynierska.inzynierka;

import androidx.appcompat.app.AppCompatActivity;

import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Random;

public class GeomemotryActivity extends AppCompatActivity {

    private Button yes_btn, no_btn;
    private ImageView shape;
    private TextView points;

    Integer[] images = {R.drawable.circle,R.drawable.square,R.drawable.star,R.drawable.star6, R.drawable.triangle};
    Random rand = new Random();
    int star6, circle, square, star, triangle, player_points = 0;
    int img, img_prev;

    Integer[] shapesArray = {0,1,2,3,4};

    //int firstShape, secondShape;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_geomemotry);
        shape = findViewById(R.id.shape);



        yes_btn = findViewById(R.id.yes_btn);
        no_btn = findViewById(R.id.no_btn);
        points = findViewById(R.id.points);

        points.setTextColor(Color.RED);

        //this line sets random image in the beginning
        shape.setImageResource(images[rand.nextInt(images.length)]);

        getShape(); //load shape images


        //there's a problem
        yes_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                showShape(shape, getRandom(shapesArray));
                compareShape(img,img_prev);
            }
        });

        no_btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                showShape(shape, getRandom(shapesArray));
                compareShape(img,img_prev);
            }
        });

    }


    //there's a problem
   private void compareShape(int rnd, int rnd_next)
   {
       rnd = new Random().nextInt(images.length);
       rnd_next = new Random().nextInt(images.length);
       if (rnd_next == rnd)
       {
           player_points+=10;
           points.setText("Points: " + player_points);
       }
       else
       {
           points.setText("Points: " + player_points);
       }
   }

   //probably something's wrong there as well
    private void showShape(ImageView iv, int choice)
    {
        if (shapesArray[choice]==0)
        {
            iv.setImageResource(circle);
        }
        else if (shapesArray[choice]==1)
        {
            iv.setImageResource(square);
        }
        else if (shapesArray[choice]==2)
        {
            iv.setImageResource(star);
        }
        else if (shapesArray[choice]==3)
        {
            iv.setImageResource(star6);
        }
        else if (shapesArray[choice]==4)
        {
            iv.setImageResource(triangle);
        }
    }

    public static int getRandom(Integer[] array) {
        int ch = new Random().nextInt(array.length);
        return array[ch];
    }



    private void getShape()
    {
        star6 = R.drawable.star6;
        circle = R.drawable.circle;
        square = R.drawable.square;
        star = R.drawable.star;
        triangle = R.drawable.triangle;

    }
}


这是因为你总是重写你的随机数。换句话说,代码中的
void compareShape(int rnd,int rnd_next)
相当于
void compareShape(){int rnd;int rnd_next;
我同意。我删除了此方法,因为它没有意义。您建议如何比较这些值?