Невозможно выйти из блока try-catch, используемого для JOptionPane - PullRequest
0 голосов
/ 20 мая 2018

Я сделал блок try-catch, чтобы убедиться в правильности ввода, получаемого из JOptionPane, но я не могу выйти из программы, когда нажимаю кнопку «Отмена» или «Закрыть» на панели JOptionPane, поскольку я застрял в то времяloop.

     while(value)
     {
     try
     {
        players = Integer.parseInt(JOptionPane.showInputDialog("Would you like to start a two-player(enter 2) or three-player(enter 3) game?"));
        value = false;
        if(players != 2 && players != 3)
           throw new InputMismatchException();

     }

     catch(InputMismatchException e)
     {

        JOptionPane.showMessageDialog(null, "Not a valid input.");
        value = true;

     }

     catch(NumberFormatException f)
     {

        JOptionPane.showMessageDialog(null, "Not a valid input.");
        value = true;

     }

     if(players == JOptionPane.CANCEL_OPTION || players == JOptionPane.CLOSED_OPTION)
        value = false;

     }

Какие-либо советы по выходу из программы?

Ответы [ 2 ]

0 голосов
/ 20 мая 2018

Вот мое решение для вас.Пожалуйста, дайте мне знать, если вам нужна помощь.

import javax.swing.*;

public class Status {

public static void main(String[] args) {

    boolean value = true;
    int players = 0;
    String input;
    while (value) {

        input = JOptionPane.showInputDialog("Would you like to start a two-player(enter 2) or three-player(enter 3) game?");

        //exits the loop if the user closes the window or presses cancel
        if (input == null)
            break;

        //if a user doesn't enter a number display error message
        try {
            players = Integer.parseInt(input);
        } catch (NumberFormatException nfe) {
            JOptionPane.showMessageDialog(null, "Not a valid input.");
        }

        //if a user enters an invalid number display error message
        if (players != 2 && players != 3) {
            JOptionPane.showMessageDialog(null, "Not a valid input.");
        } else {
            value = false;
        }


    }
  }
}
0 голосов
/ 20 мая 2018

Почему бы не использовать поле со списком на панели параметров, чтобы позволить пользователю выбирать количество игроков?

Тогда вы знаете, что данные всегда будут действительны, и вам просто нужно обработать кнопки Да / Нет.

Прочтите раздел из учебника Swing по Как создавать диалоги для примера такого подхода.

...