什么导致++值倒退?

时间:2011-07-29 22:57:48

标签: android loops integer while-loop

所以我有一个正在触发的while循环,并且对于命名我正在使用一个额外的值。

totalPlayerCount可以是1,2,3或4,无论我选择什么,似乎都会自动设置nameLoop那个值..而不管nameLoop = 1;

最重要的是,我有nameLoop ++;作为底部,当它开始时它表示播放器4,然后是播放器3,然后是播放器2,然后是播放器1 ...

为什么它会倒退呢?在整个文件中只有3个nameLoop实例,因此它不受其他任何地方的影响。

public void setNames() {
    int nameLoop = 1;
    while (totalPlayerCount >= 1){          

    //**********************//
    //***SET PLAYER NAMES***//
    //**********************//
    AlertDialog.Builder alert = new AlertDialog.Builder(this);

    alert.setTitle("Player " + nameLoop);
    alert.setMessage("Name:");

    // Set an EditText view to get user input 
    final EditText input = new EditText(this);
    alert.setView(input);

    alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int whichButton) {
      name = input.getText().toString();
      // Do something with value!
      Toast.makeText(getApplicationContext(), name, Toast.LENGTH_SHORT).show();
      }
    });

    alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
      public void onClick(DialogInterface dialog, int whichButton) {
        // Canceled.
      }
    });

    alert.show();
    totalPlayerCount--;
    nameLoop++;
    }
    return;
}

2 个答案:

答案 0 :(得分:2)

可能是因为它使它们按照正确的顺序排列,但最后是4,所以它出现在3的顶部,它位于2的顶部,在1的顶部?

编辑:像

这样的东西
private int nameLoop = 1; // make nameLoop a data member

public void setNames(int nameLoop) {
    if(nameLoop<totalPlayerCount) {
        //Build and show dialog here
        public void onClick(... ...) {
            nameLoop++
            setNames(nameLoop);
        }
    }
    return;
}

这只是我的头脑而没有经过测试!

答案 1 :(得分:0)

看起来你正在倒计时玩家的数量。尝试将其更改为:

int nameLoop = totalPlayerCount; //the 2nd line of your code
...
totalPlayerCount--; //the bottom few lines of your code
nameLoop--;

这应该修复它,但真正需要更改的部分是您使用nameLoop分配玩家编号的地方。