• 締切済み

漢数字に変換するプログラム

入力した数字を漢数字に変換する例題なのですが、回答のサンプルコードは以下になっています。 number = Math.Abs(number)以下のコードの意味が分かりません。詳しく教えていただけませんでしょうか。 Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim kanji() As String = New String() {"○", "一", "二", "三", "四", "五", "六", "七", "八", "九"} Dim number As Integer Dim kansuji As String = "" Dim sign As String = "" If Integer.TryParse(TextBox1.Text, number) Then If number < 0 Then sign = "-" End If number = Math.Abs(number) Do kansuji = kanji(number Mod 10) & kansuji number \= 10 Loop Until number < 1 Label2.Text = sign & kansuji Else Label2.Text = ("整数を入力してください") End If End Sub End Class

みんなの回答

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

分解して考えましょう 配列kanjiのどれかを選択する ... kanji()でアクセス 選択するのは Numberを10で割った余りを使う ... Number Mod 10 で算出 したがって Kanji( Number Mod 10 ) で『〇』『一』『二』『三』『四』『五』『六』『七』『八』『九』のどれかが選択されます 次の『&』は文字列の連結演算子です 前回の結果を保存している 変数Kansujiを今回の結果の後ろに連結することにより桁の操作をしています 初回は Kansujiは ""なので 『& Kansuji』の部分は無視出来ます 2回目以降には何かしらの文字列が入っています 先の投稿例なら"九"がはいていますので今回の結果が『八』なら "八" & "九" ... "八九" となります Kansuji = Kansuji & Kanji( Number Mod 10 ) と逆にすると『九』と『八』を連結することになり『九八』といった文字列になります

lotus123
質問者

お礼

ありがとうございました。 おかげさまで、理解できました。

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

分からない文言を MSDNなどで調べてみたのでしょうか Mod演算子 \演算子 などを調べてみましょう Modは余りを求める演算子 \は商を求める演算子です 123456789 といった数値を処理するのに 9を求める方法として 123456789を 10で割った余りを求めれば 9が得られます 9を処理したので 今度は80の8が必要です この場合 1)100で割った余りを求める 2)元の数を10で割った商を使って 10で割った余りを求める といった2種類の方法が考えられます ご提示のコードでは後者を選択しています

lotus123
質問者

お礼

回答ありがとうございます。 kansuji = kanji(number Mod 10) & kansuji この部分がよくわかりません。「& kansuji」は何をしているのでしょうか。