使用Shuffelarray作为全局变量



我们正在尝试在其他方法中使用此整数数组。将最终的洗牌阵列设置为全球变量已经变得几乎是不可能的。我们将其他变量设置为全局。这里的目标是每次单击一个按钮时,要设备一个新的fix []固定阵列。我们已经能够生成一个随机的int [] ar,但无法在其他方法中使用数组。因此,在进行随机int [] ar之后,我们的问题如何在OnClickBtnOne方法中使用?带有下面评论的代码

public class MainActivity extends AppCompatActivity {
Button btn1,btn2,btn3,btn4,btn5,btn6;
String T1,T2,T3,T4,T5,T6;
int test[] = new int[7];
int count = 0;
int v1,v2,v3,v4,v5,v6;
int[] fix = {3,2,1,4,6,5};
// Trying to not use above values

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    btn1 = findViewById(R.id.btn1);
    btn2 = findViewById(R.id.btn2);
    btn3 = findViewById(R.id.btn3);
    btn4 = findViewById(R.id.btn4);
    btn5 = findViewById(R.id.btn5);
    btn6 = findViewById(R.id.btn6);
    main(null);
}
// end onCeate
public static void main(String args[]) {
    int [] fix = {1,2,3,4,5,6};
    shuffleArray(fix);
    // Want to USE this fix shuffleArray
    //==================================
    for (int i = 0; i < fix.length; i++) {
        System.out.print(fix[i] + ",");
    }
    System.out.println();
}
// Implementing Fisher–Yates shuffle
static void shuffleArray(int [] ar) {
    // If running on Java 6 or older, use `new Random()` on RHS here
    Random rnd = ThreadLocalRandom.current();
    for (int i = ar.length - 1; i > 0; i--) {
        int index = rnd.nextInt(i + 1);
        // Simple swap
        int a = ar[index];
        ar[index] = ar[i];
        ar[i] = a;
    }
}
public void onClickBtnOne(View view){
    btn1.setBackgroundColor(getColor(R.color.color_Red));
    btn1.setEnabled(false);
    count = count + 1;
    v1 = count;
    test[v1] = count;
    if(fix[0] == test[v1]){
        // Need a global fix[] here
        // =========================
        T1 = "true";
        if(T1.matches("true")){
            btn1.setBackgroundColor(getColor(R.color.color_Yellow));
        }
    }else {
        T1 = "false";
    }
}

您尝试使用的数组没有一个添加方法,您需要将值从其他变量中放入类似的ar [i] = a;因此,如果使用此类型的数组声明列表值= new ArrayList&lt;>();您宣布另一个全球变量寿命的地方会更加容易。下面的修改代码

这将执行shuffle通知value.clear(),而没有此列表将在每次初始化

时都会增长
    public void shf(View view){
    value.clear();
    for (int i = 1; i <= 6; i++) {
        value.add(i);
    }
    Collections.shuffle(value);
}

,这是您的测试方法调用值。get(索引)阵列为零

    public void on1(View view){
    btn1.setBackgroundColor(getColor(R.color.color_Red));
    btn1.setEnabled(false);
    if(value.get(0) == 1){
        T1 = "true";
        if(T1.matches("true")){
            btn1.setBackgroundColor(getColor(R.color.color_Yellow));
        }
    }else {
        T1 = "false";
    }
}

相关内容

  • 没有找到相关文章