■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++;
}
|