if-операторы не запускаются при выполнении условий - PullRequest
0 голосов
/ 13 мая 2019

Я строю простую игру из 21. Все идет хорошо, но когда я нажимаю на кнопку, назначенную моей функции «Стенд», ни один из операторов if не блокирует событие, хотя я выполняю условия одна или другая в зависимости от того, какие карты уже были сданы. Я проверил все варианты утверждений, и я хочу иметь некоторое понимание или вторую пару глаз, чтобы увидеть то, чего я не вижу.

Я проверял функцию несколько раз и переписывал ее несколько раз. Я протестировал функцию только с этим оператором, и он все еще не срабатывает.

Это рассматриваемая функция:

//when player hits stand button
public void Stand(TextField playerNum, TextField dealerNum, TilePane b, Button hit, Button stand, Button deal, TextField handsLostNum, TextField handsWonNum) {
    //obtain current final scores when player stands
    playerFinal = Integer.parseInt(playerNum.getText());
    dealerFinal = Integer.parseInt(dealerNum.getText());

    if (playerFinal > dealerFinal) {
        hit.setVisible(false);
        stand.setVisible(false);
        deal.setVisible(true);

        playerNum.setText("YOU WIN!");
        dealerNum.setText("YOU WIN!");
        handsWon += 1;
        String temp = Integer.toString(handsWon);
        handsWonNum.setText(temp);
    }

    if (dealerFinal > playerFinal) {
        hit.setVisible(false);
        stand.setVisible(false);
        deal.setVisible(true);

        playerNum.setText("YOU LOSE!");
        dealerNum.setText("YOU LOSE!");
        handsLost += 1;
        String temp = Integer.toString(handsLost);
        handsLostNum.setText(temp);
    }

    if (dealerFinal == playerFinal) {
        playerNum.setText("DRAW! PLAY AGAIN!");
        dealerNum.setText("DRAW! PLAY AGAIN!");
        hit.setVisible(false);
        stand.setVisible(false);
        deal.setVisible(true);
    }
    handsWon = 0;
    handsLost = 0;
} //END STAND METHOD

И условие, которое помогает удовлетворить это, здесь:

//method to add scores to text fields
public void addScores(int pScore, int dScore, TextField playerNum, TextField dealerNum) {
    //ADD PLAYER SCORE
    String playerScore = playerNum.getText();
    int playerCurrent = Integer.parseInt(playerScore);
    int newCurrent = playerCurrent + dScore;
    String newScore = Integer.toString(newCurrent);
    playerNum.setText(newScore);

    //ADD DEALER SCORE
    String dealerScore = dealerNum.getText();
    int dealerCurrent = Integer.parseInt(dealerScore);
    int newDealCurrent = dealerCurrent + pScore;
    String newDealScore = Integer.toString(newDealCurrent);
    dealerNum.setText(newDealScore);
}

Я добавляю оценки в текстовые поля, а затем снова их извлекаю в проекте. Тем не менее, даже когда значения соответствуют условиям, превышающим значение оппонента, утверждение не срабатывает.

Ожидаемый результат - когда я нажимаю кнопку «Стенд», оператор запускается, а затем активируется переменная, которая добавляет к общему количеству.

1 Ответ

0 голосов
/ 13 мая 2019

Попробуйте помещать System.out на каждом шагу, чтобы проверить, действительно ли он туда попадает. Поместите один в качестве первого утверждения в методе Stand, например: System.out.println («Метод In Stand»);

Затем поместите больше таких слов перед операторами if и внутри них, например:

System.out.format("Before: playerFinal : %s, dealerFinal: %s, playerFinal > dealerFinal: %d %n", playerFinal, dealerFinal, playerFinal > dealerFinal);
if (playerFinal > dealerFinal) {
System.out.format("In: playerFinal : %s, dealerFinal: %s, playerFinal > dealerFinal: %d %n", playerFinal, dealerFinal, playerFinal > dealerFinal);

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

Если вы видите, что операторы if выполняются, и поток идет в них, но вы не видите никаких изменений в элементах GUI, попробуйте использовать:

Platform.runLater(() -> {
 // Your GUI changes code
  playerNum.setText("YOU WIN!");
  dealerNum.setText("YOU WIN!");
});

Platform.runLater получает runnable в качестве аргумента и является правильным способом обновления графического интерфейса пользователя, если вы используете JavaFX.

Иногда вы можете сохранить файл и запустить его, и среда IDE фактически не скомпилирует его, запустив старый код. В этом случае вы можете попробовать перезапустить IDE и повторить попытку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...