2

そのため、バッファリングされたリーダーを使用してファイルを読み取る midi プレーヤーで現在作業している問題に頭を悩ませています。ファイルから各オブジェクトを文字列として配列リストに読み込んでいます。問題は、ファイル内に 3 つの異なる潜在的なオブジェクトが存在する可能性がある場合です。2 倍の音の頻度、int の MIDI 音の値、および文字 (c4#) の音です。作成した ArrayList から、文字列オブジェクトに存在するオブジェクトのタイプをどのように確認できますか。

ArrayList<String> noteList = new ArrayList<String>();
Note note;
    String file = JOptionPane.showInputDialog("enter the file name of the song");
    String line;
    try 
    {
        BufferedReader bufread = new BufferedReader(new FileReader("res/"+file));
        while((line = bufread.readLine()) != null)
        {
            String[] result = line.split(",");
            for(String str : result)
            {
                noteList.add(str);
            }
        }
        bufread.close();
    } 
    catch (IOException e) 
    {
        e.printStackTrace();
    }
    for(int i=0; i<al.size();i++)
    {
        note = new Note(al.get(i)); //this is where the three constructors should be called
        int midiInteger = note.getMIDIAbsoluteNumber();
    channels[15].noteOn(midiInteger,127);                                
    Thread.sleep(400); 
    channels[15].noteOff(midiInteger,127);
    }

コンストラクタは単純です

    public Note(double frequency)
    {
       frequency = this.frequency;
    }

    public Note(int noteNum)
    {
       noteNum = this.Note;
    }

    public Note(String letterNote)
    {
       letterNote = this.letterNote;
    }

文字列型の配列リストから文字列または倍精度オブジェクトを区別するにはどうすればよいですか。ArrayList に変更してオブジェクト Note をシリアライズ可能にするか、単に ArrayList 要素をテストするかはわかりません。または isLetter() そこから行くか、より効率的な方法があります。

4

1 に答える 1

0

正規表現が必要なようです。 浮動小数点とDoubleは異なります。テストしてください。メモに関しては、これが役立つ場合があります。integer/^[0-9]+(\\.[0-9]+)?$

音楽コードを一致させるための正規表現

于 2015-10-18T19:10:43.883 に答える