
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
頭の体操として面白そうだったのでちょっと作ってみました。
英語には興味ないので漢数字に変換するものを作りました。まぁつくりが分かればいいと思うので。なんにせよ、結構泥臭い地道な作業になることは間違いないと思います。Java5.0以上で動作します。
/*
* 作成日: 2006/07/12
*
*/
package ちょっとしたツール;
/**
*/
public class 数字を漢数字に2 {
static String[] 漢数字 = {
"", "一", "二", "三", "四", "五", "六", "七", "八", "九"
};
static String[] 漢数字桁1 = {
"", "十", "百", "千"
};
static String[] 漢数字桁2 = {
"", "万", "億", "兆", "京"
};
public static void main(String[] args) {
int 変換したい数値 = 31234450;
String 漢数字値 = "";
if (変換したい数値 == 0) {
System.out.println("零");
return;
}
int 変換したい数値の桁数 = (int) StrictMath.log10(変換したい数値);
for (int i = 変換したい数値の桁数; i >= 0; i--) {
int 注目する桁 = (int) Math.pow(10, i);
int 注目する桁の数字 = 変換したい数値 / 注目する桁;
漢数字値 = 漢数字値 + 漢数字[注目する桁の数字];
if (i % 4 != 0) {
漢数字値 = 漢数字値 + 漢数字桁1[i % 4];
} else {
漢数字値 = 漢数字値 + 漢数字桁2[i / 4];
}
変換したい数値 = 変換したい数値 - 注目する桁の数字 * 注目する桁;
}
System.out.println(漢数字値);
}
}
No.1
- 回答日時:
ぱっと思いついたアプローチは桁数と数字の対応表を作成しておき、入力文字列を解析、変換という流れです。
{"","one","two","three",・・・,"nine"} 3n-2桁目、3n桁目はここから選び変換{"","","twenty","thirty",・・・,"ninety"} 3n-1桁目はここから選び変換
{"ten","eleven","twelve","thirteen","fourteen",・・・,"nineteen"} 3n-1桁目が1の時はこちらから選ぶ。
3n桁はhundredをつける
4桁ならthousand、7桁ならmillion、・・・
1. 入力された数字列をStringで逆順に格納(1234なら4321)
2. 一文字取得する。 桁数++ (4)
3. 次の文字があるので取得。桁数++ (43)
4. 次の文字があるので取得。桁数++ (432)
5. 3つたまったら解析、変換 1桁目が4なので fore
5.1 2桁目が3なので thirty
5.2 3桁目が2なので two。桁数が3なので hundred を付加。
5.3 併せて two hundred thirty fore の文字列を保存。
6. 2に戻り、1文字取得。桁数++ (1)
7. 次の文字が無いので解析、変換 1桁目が1なのでone。桁数が4なので thousand を付加。
8. one thousand two hundred thirty fore の文字列を保存して出力。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Word(ワード) ワードで,特定の文字だけ,字体を一括変換する方法は? 1 2023/04/26 10:11
- デスクトップパソコン 40年間の悩み キーボードにおいて初期値として漢字ローマ字変換に設定する方法 8 2023/05/08 14:50
- フリーソフト フォルダ、ファイル名の一括変換について 3 2023/03/16 09:23
- その他(プログラミング・Web制作) プログラミング python pandas 固定長データの出力 2 2022/08/16 11:22
- その他(悩み相談・人生相談) 流暢に話すテキスト読み上げアプリ 1 2023/07/23 20:41
- Excel(エクセル) エクセル文字列の日付を日付けに変える 2 2023/05/13 11:08
- フリーソフト Windowsの特殊文字を削除や変換したい そんなフリーソフトはありますか? 3 2022/11/09 00:05
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- マウス・キーボード 何故、ローマ字や英語を全角で打つ? 5 2022/05/15 09:36
- Visual Basic(VBA) EXCEL VBAで教えてください。 1 2022/12/22 04:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
javaで質問です。 文字列2023/2...
-
javaでwgetを動作させる際に
-
fromcharcode
-
半角を全角に
-
byte[] を long,float とかに...
-
Visual Basic でのコードをASCI...
-
正規表現でタグの中を除く文字...
-
カタカナの「ソ」以降の文字が...
-
アスキーコード表を利用した文...
-
int型のゼロ埋め
-
秒を時分秒へ変換
-
UTF-8とUnicodeの互換性
-
C++で10進数をn進数に…
-
長いファイル名が化けてしまう
-
Windows-31Jからutf-8への変換...
-
Vivus.jpでアニメーションを作...
-
環境に依存しない文字長(日本...
-
"\\n"を"<br>"にうまく変換でき...
-
スマホでテキストボックスの随...
-
JavaのStringクラスに「外字」...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
javaで質問です。 文字列2023/2...
-
ダブルクォーテーションのrepla...
-
javascriptで文字列のsjis利用...
-
javaの初歩的な質問です。
-
Visual Basic でのコードをASCI...
-
JavaのStringクラスに「外字」...
-
Path型をString型へ変換する(Java)
-
エクセルVBAで「〜」が表現でき...
-
int型のゼロ埋め
-
JAVAでのShift-JISとEUC-JP間の...
-
C言語32bitから64bitの移行につ...
-
UTF-8とUnicodeの互換性
-
文字列の比較
-
COBOLで半角カナを全角カナに変換
-
substring バイト単位でやりたい
-
Windows-31Jからutf-8への変換...
-
カタカナをローマジに変換する。
-
[Javascript]エンターキー押下...
-
byte型のマイナスの扱いについて
-
文字化け対策について
おすすめ情報