使用shuffelArray作为全局变量

时间:2017-12-15 05:22:24

标签: android arrays global-variables

我们正试图在其他方法中使用这个整数数组。将最终的混洗数组设置为全局变量几乎是不可能的。我们将其他变量设置为全局变量。这里的目标是每次单击一个按钮时都有一个新的int []修复数组。我们已经能够生成随机int [] ar但不能在其他方法中使用该数组。所以我们在制作随机int []之后的问题是如何在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";
    }
}

1 个答案:

答案 0 :(得分:1)

您尝试使用的数组没有一个add方法,您需要将值放入另一个变量中,例如ar [i] = a;所以如果你使用这种类型的数组声明List value = new ArrayList&lt;&gt;();你声明另一个全局变量生命的地方会容易得多。修改后的代码

这将执行shuffle NOTICE value.clear(),如果没有这个,List每次初始化时都会增长

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

这是你的测试方法调用value.get(index)数组是基于ZERO的

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