开发者

Java: Please insert "}" to complete classbody

开发者 https://www.devze.com 2023-04-04 09:47 出处:网络
I wrote a little test program but I\'m experiencing a syntax error in my closing tags... Here\'s the code

I wrote a little test program but I'm experiencing a syntax error in my closing tags...

Here's the code

public class Test 
{
    AudioFile file = null;
    String vbb = "";
    File f;

    public Test()
    {
    开发者_Python百科    openFile();
    }   

    public File openFile()
    {
        JFileChooser fc = new JFileChooser();
        fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
        int result = fc.showOpenDialog(fc);
        if(result == JFileChooser.CANCEL_OPTION)
        {
            return null;
        } else {
            f = fc.getCurrentDirectory();
            return f;
        }
    }

    f = new File(openFile());
    File[] files = f.listFiles();

    for(File fi : files)
    {
        try {
            file = (AudioFile) AudioFileIO.read(new File(fi.getAbsolutePath()));
            MP3AudioHeader ah = (MP3AudioHeader) file.getAudioHeader();
            String time = ah.getTrackLengthAsString();
            String rate = ah.getBitRate();
            boolean vb = ah.isVariableBitRate();
            if(vb == false)
            {
                vbb = "Nee";
            } else {
                vbb = "Ja";
            }
            Tag tag = file.getTag();
            String artist = tag.getFirst(FieldKey.ARTIST);
            String title = tag.getFirst(FieldKey.TITLE);
            String album = tag.getFirst(FieldKey.ALBUM);
            String genre = tag.getFirst(FieldKey.GENRE);
            String temo = tag.getFirst(FieldKey.BPM);
            String path = fi.getAbsolutePath();

            System.out.println("Duur: " + time + "\nVariabele bitrate: " + vbb + "\nArtiest: " + artist +"\nTitel: " + title
                    + "\nAlbum: " + album + "\nGenre: " + genre + "\nBPM: " + temo + "\nBitrate: " + rate + " kbps\nPad: " + path);

        } catch (Exception e)
        {
            System.err.print("FOUT");
        }
    }
}

The compiler gives an error at the LATEST closing accolade: "Please insert } to complete classbody" And also at the last accolade of the "openFile()" method...

Any suggestions?


    f = new File(openFile());
    File[] files = f.listFiles();

    for(File fi : files)
    {
        //...
    }

This whole block of logic is not in a method. It needs to be in a method or constructor.


Where you have

f = new File ...
...
catch ( .. )
{
  ....
}

You want to wrap that in

public static void main (String args[]) {
....
}

You cannot have a code block in a class definition. At the very top of the class, those variable declarations are declarations of class members with default visibility.


All the code starting with the line

f = new File(openFile());

is outside of any method. This is not legal Java: statements must be enclosed in a block or method body.


everything below

public File openFile()
{
    JFileChooser fc = new JFileChooser();
    fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
    int result = fc.showOpenDialog(fc);
    if(result == JFileChooser.CANCEL_OPTION)
    {
        return null;
    } else {
        f = fc.getCurrentDirectory();
        return f;
    }
}

is not enclosed within a method body but is rather lurking in the class body. remove the outer closing brace above.


Your code is not in a method. It needs to be in a method or a static block. Guessing your intent you can put it in the constructor like :

public class Test 
{
    AudioFile file = null;
    String vbb = "";
    File f;

    public Test()
    {
        openFile();

        f = new File(openFile());
        File[] files = f.listFiles();

        for(File fi : files)
        {
            try {
                file = (AudioFile) AudioFileIO.read(new File(fi.getAbsolutePath()));
                MP3AudioHeader ah = (MP3AudioHeader) file.getAudioHeader();
                String time = ah.getTrackLengthAsString();
                String rate = ah.getBitRate();
                boolean vb = ah.isVariableBitRate();
                if(vb == false)
                {
                    vbb = "Nee";
                } else {
                    vbb = "Ja";
                }
                Tag tag = file.getTag();
                String artist = tag.getFirst(FieldKey.ARTIST);
                String title = tag.getFirst(FieldKey.TITLE);
                String album = tag.getFirst(FieldKey.ALBUM);
                String genre = tag.getFirst(FieldKey.GENRE);
                String temo = tag.getFirst(FieldKey.BPM);
                String path = fi.getAbsolutePath();

                System.out.println("Duur: " + time + "\nVariabele bitrate: " + vbb + "\nArtiest: " + artist +"\nTitel: " + title
                        + "\nAlbum: " + album + "\nGenre: " + genre + "\nBPM: " + temo + "\nBitrate: " + rate + " kbps\nPad: " + path);

            } catch (Exception e)
            {
                System.err.print("FOUT");
            }
        }


    }   

    public File openFile()
    {
        JFileChooser fc = new JFileChooser();
        fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
        int result = fc.showOpenDialog(fc);
        if(result == JFileChooser.CANCEL_OPTION)
        {
            return null;
        } else {
            f = fc.getCurrentDirectory();
            return f;
        }
    }

}
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号