Java 安卓-设置一个计数器

Java 安卓-设置一个计数器,java,android,Java,Android,对于我的新游戏,我需要一个显示当前分数的计数器。我有四个形状,这些形状都是从随机选择的列表中填充颜色。如果第一个形状用红色填充,计数器应增加,否则不应增加。我试图实现它,但计数器不起作用,我不知道是什么故障 public class GameScreen extends Activity implements OnGestureListener{ private Paint paint = new Paint(); public int s

对于我的新游戏,我需要一个显示当前分数的计数器。我有四个形状,这些形状都是从随机选择的列表中填充颜色。如果第一个形状用红色填充,计数器应增加,否则不应增加。我试图实现它,但计数器不起作用,我不知道是什么故障

public class GameScreen extends Activity implements OnGestureListener{      
    private Paint paint = new Paint();              
    public int score = 0;              
    TextView text;
    public int colora;
    public int colorb;
    public int colorc;
    public int colord;

    @Override
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_game);
        List<Integer> numbers = Arrays.asList(Color.RED, Color.BLUE, Color.GREEN, Color.YELLOW);
        Collections.shuffle(numbers);

        colora = numbers.get(0);
        colorb = numbers.get(1);
        colorc = numbers.get(2);
        colord = numbers.get(3);

        if(colora == Color.RED){
            score = score++;
        }

        TextView score = (TextView)findViewById(R.id.textView1);
        score.setText(String.valueOf(score));

    }
}
公共类GameScreen扩展活动实现OnTestureListener{
私人油漆=新油漆();
公共智力得分=0;
文本查看文本;
公共int colora;
公共int colorb;
公共int colorc;
公共int彩色;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_游戏);
列表编号=Arrays.asList(Color.RED、Color.BLUE、Color.GREEN、Color.YELLOW);
收藏。洗牌(数字);
colora=数字。获取(0);
colorb=数字。获取(1);
colorc=数字。获取(2);
colord=数字。获取(3);
if(colora==Color.RED){
分数=分数++;
}
TextView得分=(TextView)findViewById(R.id.textView1);
score.setText(String.valueOf(score));
}
}

x++运算符递增变量的值,然后返回递增前的值。因此,当您编写
score=score++
时,您正在递增
score
,然后立即用递增之前的值覆盖该值,这意味着该值将始终为零。

如果要向变量中添加1,请键入:score++;或得分=得分+1;
不得分=得分++

您应该为变量指定有意义的名称。打印值ca,然后查看它打印出的值介于-256和-1611867之间。。。不知道它告诉我什么为什么它总是红色的?我以为它是随机分配的?据我所知,每次调用onCreate时,您都会增加
分数
计数器。你为什么要那样?onCreate仅在应用程序启动或用户恢复到以前被系统杀死的应用程序时调用。然后用什么替换它<代码>++x?只需去除做作,就可以
得分+++
好的,我测试过了。它开始计数,但不正确:有时它会增加两个,有时它会增加,即使第一个形状多次没有被红色,这似乎是一个生命周期问题。onCreate可能会多次创建。对于经常发生的增量,这是代码所说的,而不是++<代码>数字是使用预定义值创建的,因此在您的案例中,colorA将始终为红色。它会创建多次,是的。那么有没有办法让它正确计数呢?