こんにちは。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;
}
}
No.1ベストアンサー
- 回答日時:
>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()でないとダメだったかと思いますけど。
>また、何度目で正解できたかも計算できたらいいのですが、その場合はどうしたらいいのでしょうか。。。
何回目の入力なのか。をカウントする変数を用意して、必要な箇所で加算してください。
Try.Parseが例外発行しないようにするためのものだということを、Try-catchのことについて読んだときに、混ざってしまって間違えてしまっていました。
何とか、プログラムが動いて、何回目の入力なのかも計算することができました。ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- その他(プログラミング・Web制作) COBOL数値転記をCOPY句内での仕様 6 2022/06/15 18:48
- Java java 引数 戻り値のあるメソッド 3 2023/02/12 06:23
- その他(プログラミング・Web制作) Pythonを用いたフラッシュ暗算ソフトの開発に必要なもの 2 2023/01/29 02:22
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- JavaScript HTMLでJavaScriptを使ってパスワードの強化判定のプログラムを作成しています。 一通り作っ 2 2022/10/19 01:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
排他的論理和 BCC(水平パリテ...
-
VBAの再計算が反映されない件に...
-
バッチファイルでウインドウを...
-
モジュラス103の計算とは何でし...
-
Javaを使った行列計算
-
表計算上の式がVBA実行中に、メ...
-
エクセルで特定のセルのみを任...
-
VBでReplace
-
引き放し法による除算アルゴリ...
-
CCurの引値を文字列にする時と...
-
モジュロ
-
セレクトボックスを選んで点数...
-
Excel VBAの残業時間の合計計算...
-
論理演算子.NOT.の使い方
-
[ASP]日付と時間の比較
-
ファイルから数式を読み込む
-
C言語の課題で、1年の秒数を計...
-
SNRの計算の仕方
-
0xf0=256?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
VBAの再計算が反映されない件に...
-
排他的論理和 BCC(水平パリテ...
-
EXCELなどで「返す」という表現
-
C言語の課題で、1年の秒数を計...
-
バッチファイルでウインドウを...
-
骨折リスク評価のFRAXについて...
-
変化させるセルが変化しない
-
CとFORTRANの計算速度はどちら...
-
なぜオーバーフローになるので...
-
数値計算の高速化 (cos, sin, exp)
-
モジュラス103の計算とは何でし...
-
C# 計算処理中に実行中ウィン...
-
モジュロ
-
引き放し法による除算アルゴリ...
-
60進数の四則計算
-
C言語についてです。 再帰を使...
-
Perlで時間の計算
-
CRC8を教えてください
-
傾いた四角形内の範囲の条件式
おすすめ情報