有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

编译器构造Java编译时错误:解析时到达文件末尾

public class Test{
    public static void main(String[] arg){
        System.out.println("Alexander The Great");
    }
}

在这段代码中,如果删除字符串中的第一个引号,则会出现3个错误。 1.“)”预期 2.未关闭的字符串文字 3.不是声明

好的,我理解上面的错误

如果我删除字符串中的第二个引号,我也会得到3个错误。 1.未关闭的字符串文字 2. ';' 预期 3.解析时到达文件末尾

我理解1和2,但为什么是3

当大括号缺失时,它不是经常发生吗?但很明显,我有正确数量的大括号。 另外,为什么第一个案例不给出错误“解析时到达文件末尾”

另外,我正在使用jGrasp,java1.6


共 (3) 个答案

  1. # 1 楼答案

    去掉第一个引号可能会给解析器带来更多的工作空间,因为它会尝试将“Alexander”作为引用。一旦它进入空格,唯一合法的东西就是表达式的其余部分,但它认为它是另一个标识符

    它可能会插入奖金)以尝试恢复;取决于实施情况

    省略最后一个引号将把解析器发送到行的末尾。它没有试图关闭该语句,而是丢失了一点并旋转,无法恢复并到达文件末尾

    在我看来,由于Java字符串是单行的,所以在这种情况下,它可以做几乎相同的事情,并尝试关闭字符串和/或语句,恢复得更优雅一些。不过,我可能只是错过了一些显而易见的东西

  2. # 2 楼答案

    因为搜索引号时遇到EOF。我不确定是否指定了针对错误代码发出的确切错误消息

  3. # 3 楼答案

    使用公共静态void main(字符串arg[]) 代替公共静态void main(字符串[]arg)