2017-12-16 24 views
-2

姓と名を検証しようとしていますが、ユーザーが数字を入力できないようにしたいのですが、try catchを使用する方法はありますか?数字のない文字列をキャッチしよう

try{ 
     studentArray[0][studentNumber] = firstField.getText()+" "+lastField.getText(); 
    }catch(Exception e){ 
     validInput.setText("Please enter valid names"); 
    } 
+1

@JoeC重複は全く反対ではありませんか?受け入れられた答え_から、文字列が有効な整数かどうかを確認します。 – pirho

+0

これは実際には真実です(それは私の旗でした)。しかし、ユーザーが解答から解を導き出すことができればと願っています。 –

+0

@RichChurcher大丈夫、ちょうど私が怒っていると思っているのは**実際の二重引用符を置いてからです:)まあ、二重引用符。 – pirho

答えて

2

try catchはthrowableを意味します。

try{ 
     someMethod(myString); 
    }catch(Exception e){ 
     validInput.setText("Please enter valid names"); 
    } 

及び方法自体::

void someMethod(String string) throws Exception{ 
//logic 
} 

しかし、ドン」そうのように、私はあなたがそれを行うことができます意味が、あなたには、いくつかの例外をスローあなたは試してみるの下に呼び出すメソッドを、作成する必要がありますExceptionを使用すると、YourOwnExceptionをよりよく定義して投げることができます。

0

チェックこの - それは入力中にあなたが任意の数字が存在している得るかどうかを確認するための簡単な方法です:

studentArray[0][studentNumber] = firstField.getText() + " " + lastField.getText(); 
Pattern p = Pattern.compile("([0-9])"); 
Matcher m = p.matcher(studentArray[0][studentNumber]); 

if(m.find()){ 
    System.out.println("Please enter valid names"); 
} 

は、あなた自身で定義された例外をスローしてたときに間違ったそれをスローする可能性があります入力が発生しますが、try-catchブロックでこの入力をテストする場合は、この種の例外をスローするメソッドにユーザーが入力を求められるコードを指定する必要があります。

多分、本当に深刻な問題が発生したことを示す例外を投げるよりも、問題を解決する別の方法があります。上記のコードで誤った入力が検出された場合に、別の入力を行う次のチャンスをユーザに提供するためのより良い解決策ではない場合は、私はあなたのケースで提案します。 do-whileループを作成することで複数の入力を達成することができ、そのループを終了させる条件として、最後に正しい入力が行われたときに変更されるブール値フラグを使用できます。例外を投げるのではなく、プログラムの通常の進行を続けることができます。

0
for(Char x : yourstring.toCharArray()){ 
    if(!Char.isDigit(x))// it have some letter 
} 
+3

簡潔さは受け入れられますが、完全な説明が優れています。 –

関連する問題