2017-01-20 25 views
0

Как я могу запретить пользователям вводить символы, строки и пустые пространства с помощью JOptionPane? Я разорил интернет на ответы, но ничего не получилось. Пожалуйста, помогите, мне нужно это сделать через три дня. Вот мой код:Как я могу запретить пользователям вводить символы, строки и пустое пространство с помощью JOptionpane

int num, ctr, ctrodd=0, ctreven=0; 
for (ctr=1;ctr<=15;ctr++) 
{ 
    num=Integer.parseInt(JOptionPane.showInputDialog("Enter number ")); 

    if (!num.hasNextInt()) 
    { 
     JOptionPane.showMessageDialog(null,"That's not a number!"); 
     ctr--; 
     num.next(); 
    } 
    else if (num%2==0) 
    { 
     ctreven++; 
    } 
    else if (num%2==1) 
    { 
     ctrodd++; 
    } 
    ctr++; 
} 
JOptionPane.showMessageDialog(null,"Odd"+ctrodd+"\neven"+ctreven); 

ответ

1

Insetad этого:

if (!num.hasNextInt()) 
    { 
    JOptionPane.showMessageDialog(null,"That's not a number!"); 
    ctr--; 
    num.next(); 
    } 

попробовать с этим:

while (!num.hasNextInt()) 
{ 
JOptionPane.showMessageDialog(null,"That's not a number!"); 
num.next(); 
} 
+0

все еще не работает –

0

Вы можете позвонить JOptionPane.showOptionDialog с JFormattedTextField и MaskFormatter. MaskFormatter может ограничить, какие типы символов разрешены для ввода на отдельных позициях.

https://docs.oracle.com/javase/7/docs/api/javax/swing/text/MaskFormatter.html

Описывает все символы.

Этот код позволяет пользователю вводить не более 4 цифр.

public static void main(String[] args) throws ParseException 
{ 
    JFormattedTextField field = new JFormattedTextField(new MaskFormatter(
      "####")); 
    field.setColumns(10); 
    field.setEnabled(true); 
    field.setEditable(true); 
    JOptionPane.showOptionDialog(null, "Message", null, 0, 0, null, 
      new Object[] 
      { field }, field); 
    System.out.println(field.getText()); 
} 
+0

отлично, но как я могу использовать это в инструкции if else –