2017-12-08 10 views
-1

ユーザーにボックスが表示され、名前の入力を求めるプログラムを作成したいと思います。JOptionPaneでユーザーの入力を区別する

名前が正しく(実名)入力された場合、最終的なメッセージが表示されますが、たとえばユーザーが整数を入力すると、ユーザーは文字列に実名を再度入力するように求められます。

コード:

import javax.swing.*; 

public class Project018 { 
    public static void main(String[] args) { 

    String name = JOptionPane.showInputDialog("What is your name?"); 

    try { 

    int number = Integer.parseInt(name); 

     } catch (NumberFormatException n){ 

      JOptionPane.showMessageDialog(null, "Dear " + name + "\nwelcome to java programming course"); 
     } 


    String message = String.format("your name must not contain any number"); 

     JOptionPane.showMessageDialog(null, message); 
    } 

} 

私はどのように私はトップに戻ってループプログラムをするとき、ユーザーがタイプ整数とどのように本当の名前は

+0

ここから始めてください:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/while.html –

+0

正規表現パターンのバリデーションを使用することができますnに文字列に数字が含まれているかどうかを確認します。 –

答えて

1
入力されたときに、私は2番目のメッセージをスキップすることができ知りたいです私はこのために私は do-whileリットルを使用する方法を私がすることができます。先頭へ戻るループプログラムをする際、ユーザーの種類整数

まあ、知ってほしい

oop。

入力が数字であるかどうかを調べるには、数字を整数に解析しようとしないでください。代わりに、私はMatcherregexPatternを使用します。そうでない場合は、このケースは考慮していません。Foo123

この場合、正規表現の場合は[0-9]+、一致する場合はMatcherとなります。

import java.util.regex.Matcher; 
import java.util.regex.Pattern; 

import javax.swing.JOptionPane; 
import javax.swing.SwingUtilities; 

public class LoopingJOptionPane { 
    private static final String REGEX = "[0-9]+"; 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new LoopingJOptionPane()::createAndShowGui); 
    } 

    private void createAndShowGui() { 
     boolean found = true; 
     do { //This repeats this code if input is incorrect 
      Pattern pattern = Pattern.compile(REGEX); 

      String name = JOptionPane.showInputDialog("Enter your name"); 
      Matcher matcher = pattern.matcher(name); //We try to find if there's a number in our string 

      found = matcher.find(); 

      if (found) { //If there's a number, show this message 
       JOptionPane.showMessageDialog(null, "Please write only letters"); 
      } else { //Otherwise show this one 
       JOptionPane.showMessageDialog(null, "Welcome " + name); 
      } 
     } while (found); //If it has no numbers, don't repeat 
    } 
} 
:本当の名前は Matcher一致する場合は、例えば1つのダイアログまたは他の

を示して何かをに基づいて

に入力されたとき、私は第2のメッセージをスキップすることができますどのように

関連する問題