※ ChatGPTを利用し、要約された質問です(原文:java 画像ファイル)
JavaプログラムでPNG形式のファイルの判定エラーが発生する理由
このQ&Aのポイント
Javaプログラムでファイルの拡張子を表示するプログラムの一部で、PNG形式のファイルの判定に関するエラーが発生します。
他の判定を削除しPNG判定のみにするとエラーが発生しないため、if文の書き方に問題がある可能性があります。
詳細なエラー原因を追求するために、デバッグ情報を出力して調査することが効果的です。
下記のプログラムは読み込んだファイルの拡張子を表示するプログラムの一部なのですが,コマンドライン引数で指定したファイルがPNG形式の時だけエラーが出ます.ほかの判定を消してPNG判定だけにするとエラーがでないので if の書き方に問題があるのではないかと思うのですが何がいけないのでしょうか?
while (((ch = bis.read()) != -1)) {
/*GMP判定*/
if((byte)ch == BMP_SIGNATURE[k]) {
flg1++;
if(flg1 == BMP_SIGNATURE.length) {
System.out.println(args[0] + "はBMP形式のファイルです.");
break;
}
}
/*JPEG判定*/
else if((byte)ch == JPEG_SIGNATURE[k]) {
flg2++;
if(flg2 == JPEG_SIGNATURE.length) {
System.out.println(args[0] + "はJPEG形式のファイルです.");
break;
}
}
/*PNG判定*/
else if((byte)ch == PNG_SIGNATURE[k]) {
flg3++;
System.out.println(flg3);
if(flg3 == PNG_SIGNATURE.length) {
System.out.println(args[0] + "はPNG形式のファイルです.");
break;
}
}
/*GIF判定*/
else if((byte)ch == GIF_SIGNATURE[k]) {
flg4++;
if(flg4 == GIF_SIGNATURE1.length) {
System.out.println(args[0] + "はGIF形式のファイルです.");
break;
}
}
k++;
}
お礼
解決しました
補足
ifの書き方に問題があると思い他は書かなかったのですがやはりわかりませんか