Как позволить JOptionPane принимать целое число, но не строку? - PullRequest
0 голосов
/ 24 марта 2019

Я пытаюсь добавить проверку в мой код (как говорит мой брат) и что он должен принимать только цифры, а не буквы, когда он перемещается по массиву. Я пробовал разные методы, но он по-прежнему принимает буквы, а если нет, вылетает в массиве [1]. вот часть моего кода:

public static void main(String[]Terminal) {
String Choice;
char response1;
String response = null;
String Display = null;
String TryAgain = null;
String Element = null;
boolean Validation = true;

int numberOfElements = 5; //array element numbers
int index;
int Choice1;

int[] Array = new int[numberOfElements]; //array

do {    // Rewind Option
    do {
for (index = 0; index < numberOfElements; index++) { // Loop for Array Input

    if(index==0) //Dialog Design, tied to Loop

    {Element = "First";}    
    else if 
    (index==1) {Element = "Second";} 
    else if
    (index==2) {Element = "Third";}
    else if 
    (index==3) {Element = "Fourth";}
    else if 
    (index==4) {Element = "Fifth";}


    response = JOptionPane.showInputDialog(null, "Enter the " + Element + " (" +(index+1)+ "): " ); //Display Dialog

// the validation should be here right?


}    
    int Array1 = Integer.parseInt(response);
    Array[index] = Array1;

1 Ответ

0 голосов
/ 24 марта 2019

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

Как вы знаете, диалоговое окно ввода будет возвращать строку. Вы должны убедиться, что введенное значение было действительно числовым. Для этого вы можете использовать метод String # match () вместе с регулярным выражением , например:

while(true) {
    //Display Dialog
    response = JOptionPane.showInputDialog(null, "Enter the " + Element + 
                                           " (" +(index+1)+ "): " ); 
    if (!response.matches("\\d+") {
        JOptionPane.showMessageDialog(null, "The data you entered is not a 
                                      valid Numerical Value (" + response + ").", 
                                      "Invalid Input", JOptionPane.WARNING_MESSAGE);
        continue;
    }
    break;
}
...