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

わんくま同盟

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

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


(過去ログ 132 を表示中)
■77903 / )  Re[2]: java 画像ファイルの種類表示
□投稿者/ java (2回)-(2015/11/29(Sun) 15:48:11)
No77902 (もりお さん) に返信
> 2015/11/29(Sun) 14:42:59 編集(投稿者)
> 
> ■No77901 (java さん) に返信
> 
> 配列の長さが違うので、たとえばkが2で、PNG_SIGNATUREの序数2の値を比較するときに
> BMP_SIGNATUREの序数2の値も比較しようとしてArrayIndexOutOfBoundsExceptionが投げられそうな感じですね。
> 配列が長い順に比較を行ってelse ifで条件をつなげれば行けるかしら。ダメかしら。ダメかもしれません。

解答ありがとうございます!下記のようにプログラムを変更してみたのですがJPEGの時だけエラーが起きてしまいますね.

while (((ch = bis.read()) != -1)) {	
				/*GIF判定*/
				if((byte)ch == GIF_SIGNATURE[k] ) {
					flg4++;
					if(flg4 == GIF_SIGNATURE.length) {
						System.out.println(args[0] + "はGIF形式のファイルです.");
						break;
					}
				}
				/*PNG判定*/
				else if((byte)ch == PNG_SIGNATURE[k]) {
					flg3++;
					if(flg3 == PNG_SIGNATURE.length) {
						System.out.println(args[0] + "はPNG形式のファイルです.");
						break;
					}
				}
				/*JPEG判定*/
				else if((byte)ch == JPEG_SIGNATURE[k]) {
					flg2++;
					if(flg2 == JPEG_SIGNATURE.length) {
						System.out.println(args[0] + "はJPEG形式のファイルです.");
						break;
					}
				}
				/*BMP判定*/
				else if((byte)ch == BMP_SIGNATURE[k]) {
					flg1++;
					if(flg1 == BMP_SIGNATURE.length) {
						System.out.println(args[0] + "はBMP形式のファイルです.");
						break;
					}
				}
				k++;
			}

返信 編集キー/


管理者用

- Child Tree -