入力した数字を漢数字に変換する例題なのですが、回答のサンプルコードは以下になっています。
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件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
分解して考えましょう
配列kanjiのどれかを選択する ... kanji()でアクセス
選択するのは Numberを10で割った余りを使う ... Number Mod 10 で算出
したがって Kanji( Number Mod 10 ) で『〇』『一』『二』『三』『四』『五』『六』『七』『八』『九』のどれかが選択されます
次の『&』は文字列の連結演算子です
前回の結果を保存している 変数Kansujiを今回の結果の後ろに連結することにより桁の操作をしています
初回は Kansujiは ""なので 『& Kansuji』の部分は無視出来ます
2回目以降には何かしらの文字列が入っています
先の投稿例なら"九"がはいていますので今回の結果が『八』なら
"八" & "九" ... "八九" となります
Kansuji = Kansuji & Kanji( Number Mod 10 )
と逆にすると『九』と『八』を連結することになり『九八』といった文字列になります
No.1
- 回答日時:
分からない文言を MSDNなどで調べてみたのでしょうか
Mod演算子 \演算子 などを調べてみましょう
Modは余りを求める演算子
\は商を求める演算子です
123456789
といった数値を処理するのに 9を求める方法として
123456789を 10で割った余りを求めれば 9が得られます
9を処理したので 今度は80の8が必要です
この場合
1)100で割った余りを求める
2)元の数を10で割った商を使って 10で割った余りを求める
といった2種類の方法が考えられます
ご提示のコードでは後者を選択しています
回答ありがとうございます。
kansuji = kanji(number Mod 10) & kansuji
この部分がよくわかりません。「& kansuji」は何をしているのでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) マクロでテキストファイルを読み込んだ際の最終セルにデータと改行が含まれる問題の改善方法 2 2022/03/25 16:50
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) InputBoxでキャンセルボタンを押したらファイル自体を閉じたい 3 2022/07/23 17:52
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
VBAでの Replace関数で、ワイル...
-
文字列からタブコードを取り除...
-
Excelで3E8を3.00E+8にしない方...
-
【Excel VBA】複数ある特定の文...
-
MS SQLServer のSQLで文字列の...
-
エクセル 数値データを桁をそ...
-
Excelで指数表現しないようにす...
-
VBの「As String * 128」とは?
-
エクセルで文字列の最大値を抽...
-
同一セル内に関数と文字列を同...
-
エクセルで文字列をtxtファイル...
-
ORCLEでの小数の表示方法の変更...
-
Left関数とRight関数を合わせた...
-
Pro c/c++ でホスト変数の後に....
-
VBscriptからバッチに変数を渡...
-
Excelはなんで先頭の0を消すん...
-
16進数を10進数に簡単に変換す...
-
【COBOL】文字列から数値項目に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
文字列からタブコードを取り除...
-
Excelで3E8を3.00E+8にしない方...
-
VBAでの Replace関数で、ワイル...
-
Excelで指数表現しないようにす...
-
[C言語]fputsとfprintfの違い
-
エクセルで文字列をtxtファイル...
-
同一セル内に関数と文字列を同...
-
エクセルで文字列の最大値を抽...
-
Excelはなんで先頭の0を消すん...
-
MS SQLServer のSQLで文字列の...
-
エクセル 数値データを桁をそ...
-
Left関数とRight関数を合わせた...
-
VBA2005 16進を2桁で表示したい。
-
VBの「As String * 128」とは?
-
Msgboxの×が押されたとき
-
sedなどで、特定の文字列の後の...
-
【Excel VBA】複数ある特定の文...
-
OnTime 使用時のプロシージャへ...
おすすめ情報