文字列配列の文字要素と数字要素を識別したいのですが、他に方法はありますか?
String a[]={"aaaa","111111","bbbbbb"};
for(int i=0;i<a.length;i++)
{
post your code for this FOR LOOP
}
文字列配列の文字要素と数字要素を識別したいのですが、他に方法はありますか?
String a[]={"aaaa","111111","bbbbbb"};
for(int i=0;i<a.length;i++)
{
post your code for this FOR LOOP
}
彼らはあなたが問題を抱えていると言います...それであなたはそれを解決するために正規表現を選びます、今あなたは2つの問題を抱えています。:-)
ただし、速度がそれほど問題にならない場合は、適切な単体テストが実施されていることを前提として、速度を試すことができます。次のようなもの:
public static void testRegularExpressionForElement() {
String[] a = new String[] {"test1", "13", "blah", "1234.44"};
Pattern pattern = Pattern.compile("[-+]?[0-9]*\\.?[0-9]+");
for (String element : a) {
if (pattern.matcher(element).matches()) {
System.out.println(element + " is a number");
} else {
System.out.println(element + " is not a number");
}
}
}
上記の良い点は、必要なものに正確に一致するように式を適応させることができることです。
もう1つのアプローチは、Integer.parseInt()を使用して例外をキャッチすることですが、ロジックに例外を使用しているため、これは不適切なプログラミングです。
配列をトラバースし、isNumericかどうかをチェックする関数を記述します。
for (a1 : a){
boolean isNumbr= isNumeric(a1);
}
..。
public static boolean isNumeric(String str)
{
try
{
double d = Double.parseDouble(str);
}
catch(NumberFormatException nfe)
{
return false;
}
return true;
}