C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

解からないところがあります

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■37567 / inTopicNo.1)  解からないところがあります
  
□投稿者/ 田中 (2回)-(2009/06/25(Thu) 12:45:58)

分類:[.NET 全般] 

・小文字を大文字に、数字は'0','1','2'...を'9','8','7'...と反転させる。
・ただし、'#'以降の文字は変換しない。
・例として "Abc012_59F_#012Gh"を渡した場合の戻り値は "abc987_40f_#012Gh"となる。

String f3(String s){
StringBuilder sb = new StringBuilder();

boolean sharo = false

for(int i=0; i<s.length(); i++){
char c = s.charAt(i);

if(sharp){sb.append(c);}

else{
if('a' <= c && c <= 'z'){c = (char)('A' + (c - 'a'));
}
else if('0' <= c && c <= '9'){c = (char)('0' - (c - '9'));
}
else if('#'==c){sharp = ture;}

sb.append(c);
}

return sb.toString();
}


この時、if(sharp){sb.append(c);} はsharo = false だから大文字はそのまま出力されるのですか?
それとelse if('#'==c){sharp = ture;}はどうしてsharp = ture;で#以降が出力されるのですか?
もう1つif('a' <= c && c <= 'z'){c = (char)('A' + (c - 'a'));のsharはどんな意味ですか?
教えてください。お願いします。
引用返信 編集キー/
■37569 / inTopicNo.2)  Re[1]: 解からないところがあります
□投稿者/ みきぬ (490回)-(2009/06/25(Thu) 12:56:35)
これだけは言わせてほしい!
それ、ビルド通らないよ(・w・)


# あと、{ } の位置が生理的に受け付けない
引用返信 編集キー/
■37570 / inTopicNo.3)  Re[2]: 解からないところがあります
□投稿者/ .SHO (897回)-(2009/06/25(Thu) 13:04:20)
No36939 は?
引用返信 編集キー/
■37571 / inTopicNo.4)  Re[3]: 解からないところがあります
□投稿者/ すがり (46回)-(2009/06/25(Thu) 13:08:09)
整形してみました。

public class PartIsNotUnderstand {

	public static void main(String[] args){
		System.out.println(f3("Abc012_59F_#012Gh"));
	}
	
	private static String f3( String s ) {
		StringBuilder sb = new StringBuilder();

		boolean sharp = false;

		for ( int i=0; i<s.length( ); i++ ) {
			char c = s.charAt(i);
			if ( sharp ) {
				sb.append(c);
			} else {
				if( 'a' <= c && c <= 'z' ){
					c = (char)( 'A' + ( c - 'a' ) );
				} else if ( '0' <= c && c <= '9' ) {
					c = (char)( '0' - ( c - '9' ) );
				} else if ( '#' == c ) {
					sharp = true;
				}
				sb.append(c);
			}
		}
		return sb.toString();
	}
}

引用返信 編集キー/
■37578 / inTopicNo.5)  Re[4]: 解からないところがあります
□投稿者/ ryo (5回)-(2009/06/25(Thu) 13:20:09)
この時、if(sharp){sb.append(c);} はsharo = false だから大文字はそのまま出力されるのですか?
それとelse if('#'==c){sharp = ture;}はどうしてsharp = ture;で#以降が出力されるのですか?
もう1つif('a' <= c && c <= 'z'){c = (char)('A' + (c - 'a'));のsharはどんな意味ですか?
教えてください。お願いします。

引用返信 編集キー/
■37584 / inTopicNo.6)  Re[5]: 解からないところがあります
□投稿者/ επιστημη (1991回)-(2009/06/25(Thu) 13:51:43)
επιστημη さんの Web サイト
1> この時、if(sharp){sb.append(c);} はsharo = false だから大文字はそのまま出力されるのですか?

変数 sharp は"現在'#'以降の文字を読んでいる"ことを表します。
仕様:「'#'以降の文字は変換しない(そのまま出力)」を実現している部分です。

2> それとelse if('#'==c){sharp = ture;}はどうしてsharp = ture;で#以降が出力されるのですか?

この部分では出力は行われていません。上記[1]参照。

> もう1つif('a' <= c && c <= 'z'){c = (char)('A' + (c - 'a'));のsharはどんな意味ですか?

(char)のことですか? キャスト演算です。
計算の結果をcharと見做し(つまりcharに変換)ています。
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ