- PR -

数字と文字の区別の方法を教えてください

1
投稿者投稿内容
ボム
ベテラン
会議室デビュー日: 2003/07/25
投稿数: 61
投稿日時: 2003-09-30 16:11
下記のような時、変数A、Bどちらに数字が入っているかを調べる為の関数などはあるのでしょうか?

String A = "abc";
String B = "123";

taku
ぬし
会議室デビュー日: 2002/11/12
投稿数: 918
お住まい・勤務地: 墨田区→中野区
投稿日時: 2003-09-30 16:46
引用:

ボムさんの書き込み (2003-09-30 16:11) より:
下記のような時、変数A、Bどちらに数字が入っているかを調べる為の関数などはあるのでしょうか?

String A = "abc";
String B = "123";




 Javaの標準APIには存在しませんね。
下記のような感じで実装するか、commons等を使用してください。

//サンプル
class NumberCheck{

public static void main(String[] args){
System.out.println(check1(args[0]));
System.out.println(check2(args[0]));
}

//↓J2SDK1.4以降のみ
private static boolean check1(String str){
return str.matches("[0-9]{"+str.length()+"}");
}

private static boolean check2(String str){
for(int i=0;i<str.length();i++)
if(str.charAt(i)<'0' || str.charAt(i)>'9') return false;
return true;
}

}
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2003-09-30 17:27
そのものずばりはありませんが、例えばInteger#parseIntあるいはNumberFormat#parseで
例外が返ってくるかどうかでチェックすることはよくあります。
ジュニア
会議室デビュー日: 2003/05/01
投稿数: 16
投稿日時: 2003-09-30 17:46
public static boolean isNumber(String str) {
for(int i=0; i<str.length(); i++) {
if(!Character.isDisit(str.charAt(i))) return false;
}
return true;
}

という感じでどうでしょうか?
#この場合全角数字等も数字と判断してしまいますが…

[ メッセージ編集済み 編集者: ジュニア 編集日時 2003-09-30 17:53 ]
かずくん
ぬし
会議室デビュー日: 2003/01/08
投稿数: 759
お住まい・勤務地: 太陽系第三惑星
投稿日時: 2003-09-30 18:17
整数であるとは限定していないので、
Double#parseDouble(String)に対する例外(NumberFormatException)チェックを行った方が良いのでは?

# 例示内容からして、整数チェックで問題なさそう



[ メッセージ編集済み 編集者: かずくん 編集日時 2003-09-30 18:32 ]
ボム
ベテラン
会議室デビュー日: 2003/07/25
投稿数: 61
投稿日時: 2003-09-30 18:34
taku様、uk様、ジュニア様、かずくん様、ご意見ありがとうございました。

説明不足してました、JDK1.2使用です。

整数ではない場合は例外でチェックを行い、整数と決まっている場合は"isDisit"で確認できそうですね。

begood
ベテラン
会議室デビュー日: 2003/09/12
投稿数: 97
お住まい・勤務地: とうきょー
投稿日時: 2003-10-01 01:55
やられたい内容が、JAVAよりも、Cの方がやりやすそうですが、getNumericValueを使用して、一つずつチェックしていったほうが良いような気がします。例外を出すのはあまり好きではないもので・・・。(浮動小数点までいれるとなると、ちょっとコードが長くなるので、ここでは割愛します。)多分、isDigitではやりにくいことをやられているような気がして、もう少し細かく見れるgetNumericValueの方が推薦できると思われ、これなら、浮動小数点もすべての文字として見れるから、大変便利(かな?)。(でも、小数点が出てきたときにそれなりにコードを組まないといけないですけどね。)
1

スキルアップ/キャリアアップ(JOB@IT)