質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

3回答

831閲覧

C#の不等号の条件分岐でのreturn;もどきのもの

mercurian-teto

総合スコア75

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2017/11/05 10:45

C#のreturn;について質問です。
不正な数値を代入したらreturn;を使って
処理をreturn;のある分岐点で
プログラムを終了することができますが、
条件分岐が==でなかったら
(条件分岐が
不等号ではない条件だと)
return;が無視されて次の文へ実行が移ってしまいます。

C#

1 Console.WriteLine("減らしたいリストは?"); 2 int a = int.Parse(Console.ReadLine()); 3 if (a == 10 ) 4 { 5 6 return; 7 } 8 Console.WriteLine("aaa");

このプログラムだとreturn;で終了しConsole.WriteLineは
実行されませんが、

C#

1 Console.WriteLine("減らしたいリストは?"); 2 int a = int.Parse(Console.ReadLine()); 3 if (a < 0 & countlist <= a) 4 { 5 6 return; 7 } 8 Console.WriteLine("aaa");

このプログラムだと実行されてしまいます。

不等号だとreturn;もどきのものってないんでしょうか。
ユーザーが入力した値を不等号で制限して
不正な値でのプログラムの実行を阻止したいのですが、
(例えば、int a = int.Parse(Console.ReadLine());
の値が0未満1000以上の値であれば、
return;のように
そのさきのプログラムを実行しないというものです。)
どのようなコードがありますでしょうか。
回答お願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

C#

1if (a < 0 & countlist <= a)

と書かれていますが、(a < 0) と (countlist <= a) の and 条件なら

C#

1if (a < 0 && countlist <= a)

のように & を 2 つにしないといけないですよ。& が 1 つだとビット演算になってしまいます。

また、0 以上 1000 未満という条件は

C#

1if ((0 <= a) && (a < 1000))

となり、0 未満または 1000 以上という条件は

C#

1if ((a < 0) || (1000 <= a))

となります。条件式は質問文のもので本当に正しいのでしょうか。

例外を発生させることは手段の一つではありますが、
「そこで処理を停止する」という処理が正しい処理なのであれば
それは例外ではなく、正常に return すべきところになります。
例外の知識なく、安易に例外を使用することはお勧めしません。

投稿2017/11/05 12:17

twyujiro15

総合スコア217

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mercurian-teto

2017/11/05 13:01

打ち間違えていただけでした。 大変お手数をおかけしました。 例外処理の危険性もこれから考えます。 回答ありがとうございました。
guest

0

ただ単に条件の書き方を間違っているだけじゃないですか?
if (a < 0 & countlist <= a)

if (a < 0 && countlist <= a)
のタイプミスだったとしても
aが0より小さいかつ、countlist以上というあり得ない条件になっています。

C#

1if (a < 0 || countlist <= a) 2{ 3 return; 4} 5Console.WriteLine("aaa");

と実行しないという考え方と

C#

1if (0 <= a && a < countlist) 2{ 3 Console.WriteLine("aaa"); 4}

と条件時に実行するという考え方があるかと思います。

投稿2017/11/05 12:16

YAmaGNZ

総合スコア10246

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mercurian-teto

2017/11/05 13:00

ただ単なる打ち間違いでした。 ありがとうございました。
guest

0

if (a < 0 || a > 1000) throw new Exception();

という感じで、例外を発生させるというのも一つですね。

投稿2017/11/05 10:55

kiichi54321

総合スコア1984

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問