漢数字をアラビア数字に変換

最初は、1桁、4桁、大きい桁の3つのメソッドでやろうと思ったのですが、1つのメソッドでできるのに気がつきました。
多分、いろんなやり方ができるでしょう。これは前から変換してますが、後ろから変換する方法も実現できそうです。

public class Foo {

	/** 文字列の中は、すべて漢数字であること。 */
	int convert(String str) {
		int ひと桁 = 1;
		int 四桁 = 0;
		int 答え = 0;
		for (int i=0; i<str.length(); i++) {
			switch (str.charAt(i)) {
			case '一':	ひと桁 = 1;	break;
			case '二':	ひと桁 = 2;	break;
			case '三':	ひと桁 = 3;	break;
			case '四':	ひと桁 = 4;	break;
			case '五':	ひと桁 = 5;	break;
			case '六':	ひと桁 = 6;	break;
			case '七':	ひと桁 = 7;	break;
			case '八':	ひと桁 = 8;	break;
			case '九':	ひと桁 = 9;	break;
			case '十':	四桁 += (ひと桁!=0?ひと桁:1) * 10;	ひと桁 = 0;	break;
			case '百':	四桁 += (ひと桁!=0?ひと桁:1) * 100;	ひと桁 = 0;	break;
			case '千':	四桁 += (ひと桁!=0?ひと桁:1) * 1000;	ひと桁 = 0;	break;
			case '万':	答え += (四桁!=0?四桁:1)*10000; 四桁 = 0;	ひと桁 = 0;	break;
			case '億':	答え += (四桁!=0?四桁:1)*100000000; 四桁 = 0;	ひと桁 = 0;	break;
			default:	System.out.println("??? "+str.charAt(i));
			}
		}
		return 答え + 四桁 + ひと桁;
	}
	
	public static void main(String[] args) {
		Foo foo = new Foo();
		System.out.println(foo.convert("三"));
		System.out.println(foo.convert("二千五百"));
		System.out.println(foo.convert("三千"));
		System.out.println(foo.convert("一億五千万"));
		System.out.println(foo.convert("一億五千万四"));
		System.out.println(foo.convert("千十一"));
//		String test = "フランス料理のコース二千五百円(サービス料金加えて三千円)三名様より";
		
	}
}

メモリイメージはこんな感じです。
最初に頭の中で思いついたのがコッチ↓で、それをコードにしたのが↑のソースです。

"一億五千万" (0,        0,   0)
"億五千万"   (0,        0,   1)
"五千万"     (100000000,0,   0)
"千万"       (100000000,0,   5)
"万"         (100000000,5000,0)
""           (150000000,   0,0)
答え150000000