Как разрешить JOptionPane принимать целое число, но не строку?

#javascript #java #arrays #if-statement #joptionpane

#javascript #java #массивы #if-оператор #joptionpane

Вопрос:

Я пытаюсь добавить проверку в свой код (как выразился мой брат) и что он должен принимать только цифры, а не буквы при перемещении по массиву. Я пробовал разные методы, но он по-прежнему принимает буквы, и если это не так, он завершается сбоем в array [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. Какова конечная цель этого кода? Что вы пытаетесь сделать?

2. Для программы ограничить использование строк и пустых пространств для ввода в JOptionPane. Пользователь может вводить целое число, но должен отображать сообщение после ввода буквы или пустого места. В любом случае, не ставя под угрозу цикл массива.

Ответ №1:

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

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

 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;
}