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将始终为红色。它会创建多次,是的。那么有没有办法让它正确计数呢?