令牌上的语法错误"尝试"请删除此令牌

时间:2014-01-24 08:39:46

标签: java syntax

所以我试图读取一个文件,这是我的一段代码;

try{
        FileReader fr = new FileReader("mikuname.txt");
        BufferedReader br = new BufferedReader(fr);

        String str;
        while ((str = br.readLine()) != null){
            System.out.println(str + "\n");
        }

        br.close();
    }

但是在编译时我收到错误“令牌上的语法错误”,请尝试“请删除此令牌”

知道如何解决这个问题吗? 谢谢!

8 个答案:

答案 0 :(得分:3)

您已将try从蓝色插入到课堂中。您可能来自脚本语言背景,只需编写独立的操作代码就是合法的。在Java中,此类代码必须位于方法内或初始化程序中。如果您只想运行一些代码,请将其放入main方法:

public class MyGuy {
  public static void main(String[] args) {
      ... your try-block here ...
  }
}

请注意,您的案例非常适合Java 7的尝试使用资源

try (FileReader fr = new FileReader("mikuname.txt");
     BufferedReader br = new BufferedReader(fr)) 
{
   ... your actions ...
}

答案 1 :(得分:2)

在这种情况下,try块必须至少包含一个catch块或finally块。

例如

try {
} catch(SomeException e){
} finally {
}

答案 2 :(得分:1)

尝试总是至少有一个捕获块

try{
        FileReader fr = new FileReader("mikuname.txt");
        BufferedReader br = new BufferedReader(fr);

        String str;
        while ((str = br.readLine()) != null){
            System.out.println(str + "\n");
        }

        br.close();
}catch (Exception e){
//some exception information
}

检查doc以获取有关try..catch [link] http://docs.oracle.com/javase/tutorial/essential/exceptions/try.html

的更多信息

答案 3 :(得分:1)

“我知道如何解决这个问题吗?”

catch阻止之后放置try阻止。这将是正确的解决方案之一:

    catch(Exception e){}

答案 4 :(得分:1)

你应该有一个与try块对应的catch块,如下所示:

try {
...
catch(<exception>) {
}

答案 5 :(得分:1)

对于Java 1.7+,将读者的声明移到资源块中:

try (FileReader fr = new FileReader("mikuname.txt");) {
    // rest of block same as yours
}

使用资源时不需要catch和/或finally块。

答案 6 :(得分:1)

看起来您正在尝试在Java 7中使用新的try with resources。为此,您在资源周围使用()

try (
    FileReader fr = new FileReader("mikuname.txt");
    BufferedReader br = new BufferedReader(fr);
) {
    String str;
    while ((str = br.readLine()) != null){
        System.out.println(str + "\n");
    }

    // You don't need this, it's done by the try: br.close();
}

...当然,您必须确保使用Java 7,并且必须在适当的上下文中使用它(在方法内或在实例或静态初始化程序中)。

答案 7 :(得分:0)

正如编译器建议的那样,您应该删除try关键字。 但是,如果您确实想捕获可能抛出的IOException,则应添加catch子句而不是删除try关键字。

如果您使用的是Java 7,则可以稍微清理一下代码。现在,如果在读取文件时出错,则不会关闭该文件,并且您的应用程序可能会用完文件描述符。在Java 7中,try-with-resources语句有一个很好的处理方法:

try (BufferedReader br = new BufferedReader(new FileReader("mikuname.txt"))) {
    String str;
    while ((str = br.readLine()) != null) {
        System.out.println(str + "\n");
    }
} catch (IOException e) {
    // Do something with the IO problem that occurred while reading the file
}