tanaka_733 2012-08-14 05:53:25

[Java] caseの中でフラグを書き換える このエントリーをはてなブックマークに追加

投稿者からのアピールポイント

caseの中でフラグを書き換えているんですけど、これどうなるんですかね。 そして、書き手が予想していた挙動は何なんですかね。。。

(実際は、switchのところで一度だけ評価されるので、フラグを書き換えてもcase 1は実行されず、flgに1が代入されるだけです)

public void hoge(int flg) {
	switch (flg) {
	case 0:
		//何かの処理
		flg = 1;
		break;
	case 1:
		//何かの処理
		break;
	default:
		//何かの処理
		break;
	}
}

コメント(4)

#1 forth83 2012-08-14 13:17:00  

C言語での状態遷移マシンの実装などでよくある普通の書き方だと思う。Java だとState パターンなどクラスを活用した書き方をするだろうけど。

#3 InternalServerE 2012-08-14 16:01:44  

ループしてないのは駄目だけど、switch内部での変数の書き換えは自前パーサを書く場合とかに状態遷移記述に至極普通に使う書き方です。 嗜好や良し悪しはあれど、「どうなるんですかね」じゃなく、言語仕様くらい把握した上でコードウンチクした方が良いのでは。

#4 math_neko 2012-08-14 18:12:13  

フラグとは何だったのか


このウンコードに臭った人は、こちらのウンコードにも臭ってます

[Java] フルHD推奨。

このエントリーをはてなブックマークに追加

画面の左側がわりと無駄な気がします。

public int hoge(){
    int result = 0;
...

鑑賞する »

[Java] スベテカンスウ

このエントリーをはてなブックマークに追加

何でもやってくれる関数って、便利ですよね...

class Processor
{
	public bool process...

鑑賞する »

[その他] HOW TO ABC..

このエントリーをはてなブックマークに追加

実際にあった某システムの超重要なマスター...

create table item_master (
 A varchar(2...

鑑賞する »