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

こんにちは。C#初心者で勉強中のものです。
前回も皆さんに助けていただいて、大変感謝しています。その後、自分なりに勉強していますが、まだわからないことが多く困っているので、質問させていただきます。

今回は、コンピューターが決めた1~20の中のランダムな数字1つをあてるというプログラムを書いています。
一応、下記のように書いてはいますが、Try catch を使って、数字以外の文字(アルファベットやひらがな漢字など)が記入されたときに、「これは数字ではありません。もう一度数字を記入してください」というプログラムにしたいのですが、どうしたらいいのでしょうか・・・。

Try Catchがいまいちよくわからず困っています。

また、何度目で正解できたかも計算できたらいいのですが、その場合はどうしたらいいのでしょうか。。。

初心者なので説明が下手で申し訳ありませんが、よろしくお願いします。

書いたコード↓

static void Main(string[] args)
{
Random slumpat = new Random();
int speltal = slumpat.Next(1,20); //ランダムな数字1~20
int tal;
bool spela = true;

while(spela) //正解が出るまで続ける
{
Console.WriteLine("\n\t 1 から 20 の中から数字を1つ選んであててください: ");
Int32.TryParse(Console.ReadLine(), out tal);

if (tal < speltal)
{
Console.WriteLine("\t選んだ数字" + tal + " は正解より小さいです。もう一度!");
}

else if (tal > speltal)
{
Console.WriteLine("\t選んだ数字 " + tal + "は正解より大きいです。もう一度!");
}

else if (tal == speltal)
{
Console.WriteLine("\t正解です!");
spela = false;
}


}

A 回答 (2件)

>Int32.TryParse(Console.ReadLine(), out tal);


例外発行しないんじゃないですか?
https://msdn.microsoft.com/ja-jp/library/f02979c …

try
{
 tal = Int32.Parse(Console.ReadLine());
 if (tal < speltal)
  :
  :
}
catch(FormatException exp)
{
 Console.WriteLine("これは数字ではありません。もう一度数字を記入してください");
}
ってな感じでしょうかね?

>"\t選んだ数字" + tal + " は正解より~"
は…そのまま通りましたっけ?
tal.ToString()でないとダメだったかと思いますけど。

>また、何度目で正解できたかも計算できたらいいのですが、その場合はどうしたらいいのでしょうか。。。
何回目の入力なのか。をカウントする変数を用意して、必要な箇所で加算してください。
    • good
    • 0
この回答へのお礼

Try.Parseが例外発行しないようにするためのものだということを、Try-catchのことについて読んだときに、混ざってしまって間違えてしまっていました。

何とか、プログラムが動いて、何回目の入力なのかも計算することができました。ありがとうございました!

お礼日時:2016/05/03 21:47

TryParseを使うなら try catch はいらないです。


TryParseの戻り値が false なら エラーメッセージを出力して
下さい。

>何度目で正解できたかも計算できたらいいのですが

適当にカウントする変数を作って数えましょう。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。頭の中でTryParseとTry Catchがごちゃ混ぜになっていて、間違ってしまっていました。
tryParseではなく、普通にintを使ったら無事プログラムが動きました!
ありがとうございました。

お礼日時:2016/05/03 21:49

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