お世話になています。
某サイトの問題にてうまくいかないことがあります。
問題内容は
『キーボードから整数の値を入力すると、その値が漢数字で出力されるプログラムを作りなさい。
このとき、用いられるのは、1から9に対応するのが、一から九までの漢字で、ゼロは、〇と表示するようにしなさい。
また、この数字と漢字の対応は、HashMapを用いて作りなさい。
また、結果を出力する際には、3桁ごとに「,」(コンマ)を出力すること。』
とのことです。
HashMapを用いてという記述はこちらでDictionary型だと意図をくみ取りその形式でコードを書いてみました。
そこで問題を先ずあげると
入力された算用数字自体をカンマ区切りにすること
漢数字に変換する
までは成功したのですが
漢数字に変換した際にせっかく付け加えたカンマが最後コンソールで出す際に消えてしまいます。
自分なりに調べた結果
カンマを付け加えたFormatメソッドはあくまで表示形式を変更するだけで
実質は変わらないのではないのかと考察しました。
そこでString.Splitを使い
漢数字に変換した文字列を三桁ごとに区切り
カンマをつけようかと思ったのですが
ただの文字が連続した文字列をどのように三桁ごとに分解する
条件を設定すればいいのか分からなくなり、投稿させて頂きました。
自分の疑問点をまとめると
1、最初のformatメソッドはあくまで表示形式の変更のみなのか、またそうだとしたら文字列には宛がうことは可能なのか
2、String.Splitを使った場合、漢数字をどのように三桁に分解し、桁数に応じて正しくカンマを付加すればいいのか
以上②点です。
宜しくお願いします。
自分が書いたコードです。
↓
c#
1 2 Dictionary<string, string> tranceNumber = new Dictionary<string, string>(); 3 // 対応する数字の漢数字を1から9まで、0は○で用意する 4 5 tranceNumber ["1"]="一"; 6 tranceNumber ["2"]="二"; 7 tranceNumber ["3"]="三"; 8 tranceNumber ["4"]="四"; 9 tranceNumber ["5"]="五"; 10 tranceNumber ["6"]="六"; 11 tranceNumber ["7"]="七"; 12 tranceNumber ["8"]="八"; 13 tranceNumber ["9"]="九"; 14 tranceNumber ["0"]="○"; 15 16 Console.WriteLine("整数の値を入力してください:"); 17 // 入力された文字列をString化し変数として格納 18 string typedText = Console.ReadLine(); 19 // 文字列が整数の値に変換できるか判別 20 // trueならカンマが三桁毎に付くよう変更し元の文字列に格納 21 int number; 22 if (int.TryParse(typedText, out number)) 23 { 24 string withComma = string.Format("{0:#,0}", number); 25 typedText = withComma; 26 } 27 else 28 { 29 Console.WriteLine("整数の値を入力してください"); 30 } 31 // 確認用にここでひとまず表示 32 Console.WriteLine(typedText); 33 34 // String型のtypedTextを一文字毎に判別し 35 // 漢数字に変換したいのでchar型に変換 36 foreach (char oneCharacter in typedText) 37 { // 行で漢数字に変換したのでtypedTextに再変換 38 typedText = oneCharacter.ToString(); 39 // Dictionary tranceNumberに typedTextの文字が含まれているならtrue 40 if (tranceNumber.ContainsKey(typedText)) 41 { 42 Console.Write(tranceNumber[typedText]); 43 } 44 } 45
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/05/22 06:43