Что заставляет значение ++ возвращаться назад? - PullRequest
0 голосов
/ 30 июля 2011

Итак, у меня есть цикл 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 ]

2 голосов
/ 30 июля 2011

Может быть, это делает их в правильном порядке, но 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;
}

Это просто с моей головы и не проверено!

0 голосов
/ 30 июля 2011

Похоже, вы подсчитываете количество игроков, проходя через них. Попробуйте изменить его на:

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

Это должно исправить это, но часть, которую вы действительно должны изменить, - это то место, где вы используете nameLoop для назначения номера игрока.

...