Java 此行有多个标记-标记“上的语法错误”&",;预期-标记“上的语法错误”;(“预期的,{”

Java 此行有多个标记-标记“上的语法错误”&",;预期-标记“上的语法错误”;(“预期的,{”,java,java-7,parentheses,try-finally,Java,Java 7,Parentheses,Try Finally,我正在学习Java(很抱歉我的英语很差,这不是我的母语),当我在Eclipse(JavaSE-1.7)中的每一个“try”中执行“try finally”块时,会出现以下消息: 这条线上有多个标记 -语法错误,插入“}”以完成块 -语法错误,插入“Finally”以完成BlockStatements 以下是完整的代码: package Java; public class Arquivo3 { private Path BdC = Paths.get("C:/xti/files/co

我正在学习Java(很抱歉我的英语很差,这不是我的母语),当我在Eclipse(JavaSE-1.7)中的每一个“try”中执行“try finally”块时,会出现以下消息:

这条线上有多个标记 -语法错误,插入“}”以完成块 -语法错误,插入“Finally”以完成BlockStatements

以下是完整的代码:

package Java;

public class Arquivo3 {

    private Path BdC = Paths.get("C:/xti/files/conta.txt");
    private Charset utf8 = StandardCharsets.UTF_8;

    public void armazenarContas(ArrayList<Conta> contas) throws IOException{                
        try(BufferedWriter writer = Files.newBufferedWriter(BdC, utf8)) {
            for (Conta conta : contas) {
                writer.write(conta.getCliente() + ";" + conta.getSaldo() + "\n");
            }
        }
    }

    public ArrayList<Conta> recuperarContas() throws IOException{
        ArrayList<Conta> contas = new ArrayList<Conta>();
        try (BufferedReader reader = Files.newBufferedReader(BdC, utf8)){
            String line = null;
            while((line = reader.readLine()) != null) {
                String[] t = line.split(";");
                Conta conta = new Conta(t[0], Double.parseDouble(t[1]));
                contas.add(conta);
            }
        }finally {
        return contas;  
        }

    }

    public static void main(String[] args) throws IOException{
/*
        ArrayList<Conta> contas = new ArrayList<Conta>();
        contas.add(new Conta("Ricardo", 12000.23));
        contas.add(new Conta("Lawrence", 11050.32));
        contas.add(new Conta("Sandra", 18000.21));
        contas.add(new Conta("Beatriz", 23200.09));
    */  
        Arquivo3 operacao = new Arquivo3();
        //operacao.armazenarContas(contas);
        ArrayList<Conta> contas2 = operacao.recuperarContas();
        for (Conta conta : contas2) {
            conta.exibeSaldo();
        }
    }

}
包Java;
公开课{
私有路径BdC=Path.get(“C:/xti/files/conta.txt”);
私有字符集utf8=标准字符集.UTF_8;
public void armazenarContas(ArrayList contas)引发IOException{
try(BufferedWriter=Files.newBufferedWriter(BdC,utf8)){
(续:续){
write(conta.getCliente()+”;“+conta.getSaldo()+”\n”);
}
}
}
public ArrayList RecurPerarContas()引发IOException{
ArrayList contas=新的ArrayList();
try(BufferedReader=Files.newBufferedReader(BdC,utf8)){
字符串行=null;
而((line=reader.readLine())!=null){
字符串[]t=line.split(“;”);
Conta Conta=new Conta(t[0],Double.parseDouble(t[1]);
续。添加(续);
}
}最后{
返回contas;
}
}
公共静态void main(字符串[]args)引发IOException{
/*
ArrayList contas=新的ArrayList();
contas.添加(新Conta(“Ricardo”,12000.23));
续。增加(新续(“劳伦斯”,11050.32));
续。增加(新续(“桑德拉”,18000.21));
续。增加(新续(“Beatriz”,23200.09));
*/  
Arquivo3 operacao=新的Arquivo3();
//阿马泽纳孔塔斯歌剧院(contas);
ArrayList contas2=operacao.RecurperarContas();
(续:续二){
续exibeSaldo();
}
}
}

正如Eclipse所说,在
armazenarContas()
方法中,您不会使用
finally
(或任何其他相关内容)来完成语句。您需要在
try{}
的末尾添加a或a

您的语法应该类似于:

try {
//Do stuff
} catch (ExceptionType name) {
//If an exception occours, you can handle it here.
}
或:

或者你甚至可以:


正如Eclipse所说,在您的
armazenarContas()
方法中,您没有使用
finally
来完成语句(或者其他类似的语句)。您需要在
try{}
的末尾添加a或a

您的语法应该类似于:

try {
//Do stuff
} catch (ExceptionType name) {
//If an exception occours, you can handle it here.
}
或:

或者你甚至可以:


使用来自OP的注释

@yan Odd,我使用jdk7,这对我来说很有用,但是,可能是eclipse 使用jdk6测试语法错误。-2小时前的gangqinlaohu

这是正确的。您正在使用一些jdk7功能,但eclipse配置为使用jdk6(或更早版本)。以下是使用eclipse()启用jdk7的说明


特别是合规性设置。

使用OP的注释

@yan Odd,我使用jdk7,这对我来说很有用,但是,可能是eclipse 使用jdk6测试语法错误。-2小时前的gangqinlaohu

这是正确的。您正在使用一些jdk7功能,但eclipse配置为使用jdk6(或更早版本)。以下是使用eclipse()启用jdk7的说明


具体来说,法规遵从性设置。

看起来Eclipse使用java 1.6而不是1.7作为其代码提示。您的IDE使用的是jdk6。请修复此问题。下面的答案仅与java6相关。看起来Eclipse使用java 1.6而不是1.7作为其代码提示。您的IDE使用的是jdk6。请修复此问题。下面的答案仅与java6相关。OP是using java 7 try with resources,这是不需要的。他应该通过eclipse设置启用java 7遵从性。OP正在使用java 7 try with resources,这是不需要的。他应该通过eclipse设置启用java 7遵从性。
try{
//Do stuff
} catch (ExceptionType name) {
//If you get an exception
} finally {
//Always excecuted
}