所以我有一个正在触发的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;
}
答案 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
分配玩家编号的地方。