我不知道为什么,但是我在这里的if / else语句工作不正确。它在给定条件下工作。

public class MainActivity extends AppCompatActivity {

private int rand1;
private int rand2;
private int points;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    points=0;
    pickRandomNumbers();
}

private void pickRandomNumbers()
{
    Random randy = new Random();
    int rand1 = randy.nextInt(10);
    int rand2 = randy.nextInt(10);
    Button lbutt = (Button) findViewById(R.id.left_button);
    lbutt.setText(Integer.toString(rand1));
    Button rbutt = (Button) findViewById(R.id.right_button);
    rbutt.setText(Integer.toString(rand2));
}

public void leftButtonClick(View view) {
    if (rand1 >= rand2){
        points++;

    } else {
        points--;

    }

    TextView tv = (TextView) findViewById(R.id.points_fields);
    tv.setText("Points: " + points);
    pickRandomNumbers();
}

public void rightButtonClick(View view) {
    if (rand2 >= rand1){
        points++;

    } else {
        points--;

    }

    TextView tv = (TextView) findViewById(R.id.points_fields);
    tv.setText("Points: " + points);
    pickRandomNumbers();
}
}


当rand1大于rand2时,它应该增加点数;当rand1小于rand2时,它应该减少点数,但它只是不断地增加点数。

当我将rand1>=rand2更改为rand1>rand2时,只会减少分数。两个按钮功能都发生了相同的情况。请帮助我理解这一点。

最佳答案

在类的顶部声明两个全局变量rand1rand2。稍后,您再次声明两个具有相同名称的变量。 Java将此代码视为有效代码,因为前两个可以引用为this.rand1this.rand2。当您只想创建一次变量时,您将创建两次变量。

如果在第二个声明之前删除int,应该没问题。

08-19 19:43