アプリ版:「スタンプのみでお礼する」機能のリリースについて

入力した数字を漢数字に変換する例題なのですが、回答のサンプルコードは以下になっています。
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

A 回答 (2件)

分解して考えましょう



配列kanjiのどれかを選択する ... kanji()でアクセス
選択するのは Numberを10で割った余りを使う ... Number Mod 10 で算出
したがって Kanji( Number Mod 10 ) で『〇』『一』『二』『三』『四』『五』『六』『七』『八』『九』のどれかが選択されます

次の『&』は文字列の連結演算子です

前回の結果を保存している 変数Kansujiを今回の結果の後ろに連結することにより桁の操作をしています
初回は Kansujiは ""なので 『& Kansuji』の部分は無視出来ます
2回目以降には何かしらの文字列が入っています
先の投稿例なら"九"がはいていますので今回の結果が『八』なら
"八" & "九" ... "八九" となります

Kansuji = Kansuji & Kanji( Number Mod 10 )
と逆にすると『九』と『八』を連結することになり『九八』といった文字列になります
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/02/10 02:31

分からない文言を MSDNなどで調べてみたのでしょうか


Mod演算子 \演算子 などを調べてみましょう

Modは余りを求める演算子
\は商を求める演算子です

123456789
といった数値を処理するのに 9を求める方法として
123456789を 10で割った余りを求めれば 9が得られます
9を処理したので 今度は80の8が必要です
この場合
1)100で割った余りを求める
2)元の数を10で割った商を使って 10で割った余りを求める
といった2種類の方法が考えられます

ご提示のコードでは後者を選択しています
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
kansuji = kanji(number Mod 10) & kansuji

この部分がよくわかりません。「& kansuji」は何をしているのでしょうか。

お礼日時:2008/02/09 20:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!