0

ばかげた質問かもしれませんが、それは私を怒らせています。

readAudioDataFromFileメインから呼び出されたときに引数を受け取っていない関数 ( ) があります。コンパイル エラーや例外などはスローされず、間違った値が返されるだけです。

ここにいくつかの単純化されたコードがあります:

Mainクラス

package audioCheck;

import java.io.FileNotFoundException;

public class AudioCheck
{
    public static void main(String[] args) throws FileNotFoundException
    {
        String filePath1 = "C:/file1.wav";
            String filePath2 = "C:/file2.wav";

        new readAudioDataFromFile(filePath1, filePath2);
    }

}

ReadAudioDataFromFileクラス

package audioCheck;

import java.io.*;

public class readAudioDataFromFile {
    public readAudioDataFromFile(String filePath1, String filePath2) throws FileNotFoundException {

    // This is the part I hardcode for getting the correct results, instead of passing them as args.
// String filePath2 = "C:/file2.wav";
// String filePath1 = "C:/file1.wav";

         FileInputStream ins2 = null;
         FileInputStream ins1 = null;

         File file2 = new File(filePath2);
         File file1 = new File(filePath2);

         int size2 = (int) file2.length();    
         int size1 = (int) file1.length();

         byte [] buffer2=new byte [size2];
         byte [] buffer1=new byte [size1];

         try {
               ins2= new FileInputStream(filePath2);
               ins1= new FileInputStream(filePath1);

         } 
         catch (FileNotFoundException e) {
           e.printStackTrace();
         }
         try {
             //contar e imprimir buffer 2
               ins2.read(buffer2, 0,size2);
               int count2 =0;
               for(int i=0; i<buffer2.length; i++)
               {
                 if(buffer2[i]!=0)
                   count2++;
               }
               String data2 = String.valueOf((count2)); 
               System.out.println(data2);

               //contar e imprimir buffer1
               ins1.read(buffer1, 0,size1);
               int count1 =0;
               for(int i=0; i<buffer1.length; i++)
               {
                 if(buffer1[i]!=0)
                   count1++;
               }
               String data1 = String.valueOf((count1)); 
               System.out.println(data1);

         } 
         catch (IOException e) {
           e.printStackTrace();
         }
       }

}

問題は、ファイルパスをハードコードするとreadAudioDataFromFile、完全に機能することです。それぞれの場合の出力は次のとおりです。

から引数を渡すようにしてmainください:

348
388

ハードコーディングreadAudioDataFromFile:

1205739
1346847

アドバイスありがとう

4

0 に答える 0