Java - 缺少返回语句

时间:2014-01-21 11:13:23

标签: java

我收到错误 - “缺少return语句” - 在第26行,在这种情况下是代码中的最后一个花括号。我知道它字面上意味着我必须返回方法中的某个地方(你可以称之为函数吗?),但我不知道在哪里 - 也不知道为什么。这是代码:

public String[] OpenFile() throws IOException {

    Map<String, Double> map = new HashMap();

    FileReader fr = new FileReader("money.txt");
    BufferedReader br = new BufferedReader(fr);


    try{
        while (br.ready()){
            String str = br.readLine();
            String[] list = str.split(" ");
            System.out.println(list);               
        }
    }   catch (IOException e){
        System.err.println("Error - IOException!");
    }
}

3 个答案:

答案 0 :(得分:4)

如果您只是想像现在一样打印文件,请将返回类型更改为void,如下所示:

public void OpenFile() throws IOException {

否则,由于您只是打开并阅读文本文件,您可能需要另一个String变量,您将文件的行附加到然后返回,而不是String[]。也许是这样的:

public String openFile(String fileName) throws IOException {

    String output = "";
    FileReader fr = new FileReader(fileName);
    BufferedReader br = new BufferedReader(fr);

    try {
        while (br.ready()) {
            String line = br.readLine();
            output += line + "\n";
        }
    } catch (IOException e) {
        System.err.println("Error - IOException!");
    }
    return output;
}

答案 1 :(得分:3)

首先请注意,这不是一个学习任何编程语言的初学者论坛。你会发现很难在这里得到一个非常基本的问题,大约有20个人指向你的方向(包括我自己)

话虽如此,请查找java tutorials,初学者指南或简称the docs。答案几乎每次都会让你直截了当,因为java编程语言中有这么多材料

Stackoverflow更像是一个问题和答案网站,提供更抽象的问题,前所未见的问题和专家的棘手问题 - 所有可能迎合一般受众和帮助的事情许多人,而不仅仅是你自己。不可否认,你提出的问题非常好,格式也很好,所以对你赞不绝口,欢迎来到网站

至于这个非常具体的问题,您有以下选择:

声明无效返回类型

public void openFile() throws Exception {

}

返回初步null,直到您确定要返回的内容

public String[] openFile() throws Exception {
    return null;
}

(但要确保调用实体知道回来的内容;))

将一些有效数据返回给调用方法的实体

public String[] openFile() throws Exception {
    String[] myArray = new String[5];
    return myArray;
}

答案 2 :(得分:1)

public String[] OpenFile() // expected return type is String array

但你没有从你的方法中返回。

如果您不想返回该更改,则您的方法返回类型为void(不返回)

public void OpenFile() throws IOException {

}

或者,如果您想按预期返回

public String[] OpenFile() throws IOException {

 String[] arr=new String[5];

 // implementation

 return arr; 

}