java - 计数器计数不正确

标签 java android

我有 8 对按钮(总共 16 个),其中一些术语来自 sqlite 数据库。我需要当用户连接 8 对(正确或错误,没关系)时结束游戏,最后弹出一些窗口。当我在代码中放置 counter<7 时,我需要连接 8 对加上再次单击某些按钮(17 次单击)。如果我输入 counter<6,那么我会在 7 对和一次单击(15 单击)后收到弹出窗口。我不明白这个逻辑。所以这是代码:

final OnClickListener clickListener = new OnClickListener() {

        private Button buttonClicked;

        public void onClick(View v) {
            if (counter < 7) {
                Button button = (Button) v;
                button.getBackground()
                      .setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0x003333));

                if (buttonClicked == null) {
                    // first button is clicked
                    buttonClicked = button;

                    // only do stuff if buttons are in different layouts
                } else {
                    if (!button.getParent().equals(buttonClicked.getParent())) {
                        // second button is clicked

                        if (buttonClicked.getTag().equals(button.getTag())) {

                            // second button is clicked and same tag but different button

                            Toast.makeText(Spojnice.this, "Correct", Toast.LENGTH_SHORT).show();
                            button.getBackground()
                                  .setColorFilter(new LightingColorFilter(0xFFFFFFFF, 0x66FF33));
                            buttonClicked.getBackground().setColorFilter(
                                new LightingColorFilter(0xFFFFFFFF, 0x66FF33));
                            buttonClicked.setEnabled(false);
                            button.setEnabled(false);
                            buttonClicked = null;
                            score.setText("Poeni: " + brojPoenaSpojnice);
                            counter++;
                        } else {
                            counter++;
                            //reset LightingColorFilter first
                            button.setEnabled(false);
                            Toast.makeText(Spojnice.this, "Wrong", Toast.LENGTH_SHORT).show();
                            buttonClicked = null;

                        }

                    } else {
                        //same button clicked show message or un toggle?

                        buttonClicked = button;
                    }
                }
            } else {
                Intent i = new Intent(Spojnice.this, Popup_spojnice.class);
                startActivity(i);
                mHandler.postDelayed(mLaunchTask, 6500);
            }
        }

    };

最佳答案

由于您首先检查计数器,然后递增它,因此在连接 7 对后,您的计数器将为 6(仍然 <7)。下次你增加计数器时,它将是 7,并且你的第一个条件将为 false,但只会在下一轮中再次检查。

要解决这个问题,您应该在增加计数器之后检查条件 ( if (counter < 7) ),而不是之前。

关于java - 计数器计数不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15993838/

相关文章:

java - Quartz Scheduler - Cron 触发器表达式不起作用

java - 使用 eclipse 和 tomcat 7 运行和部署 servlet

java - CDI + Java EE 7 中的托管并发

java - 重复格式标志异常

java - Android OnKeyListener 未注册 Enter 和搜索键。

android - 带有 CheckBox 的 ListView 的奇怪行为

java - beanName 不能为空

android - Intent 和分享我的申请

Android "gen"文件夹和 SVN - 宿敌

android - 从android中的服务器获取响应