ブルーノのC#プログラミング & unity勉強日記

プログラミング素人、ブルーノの自主勉強ノートです。他のプログラミングを勉強したい方の助けになれば幸いです。その他趣味の雑記もしていきたいです

数値-文字列間の変換と入力された型の判別について

みなさんこんにちは

"ヒトは飢えれば飢えるほどご飯を買い過ぎてしまう"

ブルーノです。今回はちょっとおさらいも兼ねて型の変換や判別の仕方についてまとめていきます。

 

Parseメソッド

今回は型変換の中でもよく使われるParseメソッドについて紹介します。例えば入力された値を計算に使いたい時、入力された値をそのまま使おうと思っても文字列型のため、うまく計算できません

Console.WriteLine("二乗したい数字を入力してください");

str nijou = Console.ReadLine();

このまま ReadLine で nijou を取得してもstring型なので加工できませんね。

じゃあ最初からintで代入させて

int nijou = Console.ReadLine にすればいいんじゃないか?って思ったんですがどうやらReadLineメソッドは文字列型しか返さないので入れる先は必然的にstring型になるようです。

そこで Parse メソッドを中に入れることで、任意の数字の型にしていれることができます。こんな風に

Console.WriteLine("二乗したい数字を入力してください");
int nijou = int.Parse(Console.ReadLine());

int.Parseの後の()に文字列型を入れることで左辺の用意した数値型の変数に変換できるのです。これで入力内容を数値型にできますね。では次に入力された内容が何型であるかを判別する方法に行きたいと思います。

 

Char.Is〇〇〇(str)について

先ほどは変換する方法についてやりましたが、そもそも入力された内容が必ず変換できるとは限らないのです。ユーザーの入力とは様々なのでそれを全てカバーする必要があります。今回はよく使われる

・Char.IsNumber()

・Char.IsDigit()

についてまとめます。この二つ、それぞれ()内に入力された内容が数字か、10進数かを求められます。返す値はbool型なので、主にif文で使われそうですね。

例)

 

f:id:covory10101101276:20170526142228p:imagef:id:covory10101101276:20170526142342p:image 

一桁でない場合や数字でない場合は弾かれるようにしました。にしてもアプリの仕様上インデントがすごく見づらくてスミマセン(汗

でも野球ファンの方は2桁がお気に入りの可能性があると思います。じつはTryParseメソッドというのを使えば2桁でしかももっと短くできるようです。c#内蔵のメソッドには便利そうなものがたくさんありますね。もっと勉強が必要そうです。