数値⇒漢数字変換 java
こんにちは。java初心者の学生です。
実行時引数で得た数値を漢数字に変換するコードを書いているのですがif構文の&&のところで実行時エラーが出てしまいます。
原因としては1200001234と入力した時に”args[0].length()-12が存在しない”などがあげられると思いますが、下に載せたコード以外で兆、億、万桁が0の場合の対処方がわかりません。
御享受いただけると助かります。よろしくお願いします!
public class Question14 {
/**
* 実行時引数で得た数字の漢数字変換
* @param args 数字
*/
public static void main(String[] args)
{
StringBuffer num = new StringBuffer(args[0]);
if(num.length()>20){
System.out.println("0~99999999999999999999の数値で入力してください。");
}
else{
StringBuffer sb = new StringBuffer();
if(num.equals("0")){
System.out.println("零");
}
else{
for(int keta = num.length()-1; keta>=0; keta--){
if(keta==args[0].length()-5 && !((num.substring(args[0].length()-8,args[0].length()-4).equals("0000")))){
sb.insert(0,'万');
}
else if(keta==args[0].length()-9 && !((num.substring(args[0].length()-12,args[0].length()-8).equals("0000")))){
sb.insert(0,'億');
}
else if(keta==args[0].length()-13 && !((num.substring(args[0].length()-16,args[0].length()-12).equals("0000")))){
sb.insert(0,'兆');
}
else if(keta==args[0].length()-17){
sb.insert(0,'京');
}
switch(num.charAt(keta)){
case'1':
sb.insert(0,"一");
break;
case'2':
sb.insert(0,"二");
break;
case'3':
sb.insert(0,"三");
break;
case'4':
sb.insert(0,"四");
break;
case'5':
sb.insert(0,"五");
break;
case'6':
sb.insert(0,"六");
break;
case'7':
sb.insert(0,"七");
break;
case'8':
sb.insert(0,"八");
break;
case'9':
sb.insert(0,"九");
break;
case'0':
continue;
default:
System.out.println("数値を入力してください");
break;
}
if(keta==num.length()-2||keta==num.length()-6||keta==num.length()-10||keta==num.length()-14||keta==num.length()-18){
sb.insert(1,"十");
}
else if(keta==num.length()-3||keta==num.length()-7||keta==num.length()-11||keta==num.length()-15||keta==num.length()-19){
sb.insert(1,"百");
}
else if(keta==num.length()-4||keta==num.length()-8||keta==num.length()-12||keta==num.length()-16||keta==num.length()-20){
sb.insert(1,"千");
}
}
}
System.out.println(sb);
}
}
}
お礼
回答ありがとうございます。 私の方法で大丈夫なようで安心できました(^^)