空白で区切られた数字文字列をint配列に格納する例

 

プログラミングを始めたばかりの頃は、「文字(String)」と「数字(int)」の
違いがよく分からないかもしれません。

毎度、管理人イガジーです。

"123" などと、引用符(")で囲んであると、数字が書いてあっても
文字なんだろうなぁ(変だけど)、と思ってる方もいるかもしれませんね。

文字列(String)だと、"123"+"4" は、"1234" になります。
数字(int)だと、123+4 は、127 になるのです。

という訳で、数字文字列が空白で区切られているString から
数字をint配列として取り出すメソッドを作ってみましょう。
"10 20 30 40" から、 10, 20, 30, 40 を取り出すわけです。

("  12 3    456   789  " などと、

空白は1つ以上かもしれません。)

取り出す数字の個数は、4個固定とします。
つまり、"1 2 3 4 5 6" の場合は、1, 2, 3, 4 まで取り出して終わりにします。
逆に、"1 2" など、4個に満たない場合は、初期値を補います。
初期値は、仮に、{ 20, 20, 260, 260} とします。
数字以外があった場合も、初期値にします。
例えば、"1 x 3 あ" という入力があったら1, 20, 3, 260 を返すことにします。
(20 や 260 は初期値です。)

では、テストプログラム付きのサンプルコードです。

public class Stub1 {
	Stub1(){
		arrayprint(getpos(" 0 10  100  120"));
		arrayprint(getpos(" 0 10  100  120 200"));
		arrayprint(getpos(" 0 10  100"));
		arrayprint(getpos("5 x 9"));
	}
	void arrayprint(int []x){
		for (int i=0;i<x.length;++i)
			System.out.print(x[i]+" ");
		System.out.println();
	}
	public static void main(String[] args) {
		new Stub1();
	}

	int[] getpos(String posline) {
		String []s=posline.trim().split(" +");
		int []pdat={20,20,260,260}; // assume data
		int sl=(s.length>pdat.length)? pdat.length:s.length;
		for (int i=0;i<sl;++i) {
			pdat[i]=s2int(s[i], pdat[i]);
		}
		return pdat;
	}
	int s2int(String s, int as) {
		int r;
		try {
			r=Integer.parseInt(s);
		} catch (NumberFormatException e) {
			r=as;
		}
		return r;
	}
}

ポイントは、String []s=posline.trim().split(" +"); ですね。
split() には、正規表現が使えます。" +" は、1つ以上の半角空白を表しています。
単に" "だと、空白が複数あった場合に、"" が切り出されてしまいます。

もちろん、1文字ずつ調べて自力で数字に変換する方法もありますが
今日は、sprit()の活用法をご紹介しました。

この記事へのコメントはこちら

メールアドレスは公開されませんのでご安心ください。
また、* が付いている欄は必須項目となりますので、必ずご記入をお願いします。

内容に問題なければ、下記の「コメント送信」ボタンを押してください。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)