得到错误“此方法必须返回类型为java.lang.String的结果”

时间:2018-10-29 08:05:58

标签: java return-value

假设file.txt仅包含“ Hello”。当我编译Java代码时,它会显示

  

错误:此方法必须在第5行中返回java.lang.String类型的结果。

当我使用readTxt函数进行打印时,该方法有效,它可以显示“ Hello”。 我已经检查了结果是否正确为String类型,但是它也显示了编译器错误。如何使返回值返回主函数?

import java.io.*;
import java.lang.String;

public class ReadTxtFile {
public static String readTxt(String filePath) {

  try {
    File file = new File(filePath);
    if(file.isFile() && file.exists()) {
      InputStreamReader isr = new InputStreamReader(new FileInputStream(file),     "utf-8");
      BufferedReader br = new BufferedReader(isr);
      String lineTxt = null;
      lineTxt = br.readLine();
      //System.out.println(lineTxt);
      br.close();
      return lineTxt;
    } else {
    }
  } catch (Exception e) {
  }

  }
  public static void main(String[] args) {
    String filePath = "C:/file.txt";
    String fileword = readTxt(filePath);
    System.out.println(fileword);
  }

}

2 个答案:

答案 0 :(得分:3)

您答应从您的方法中返回一个字符串,因此您现在必须这样做。兑现承诺的唯一方法是引发异常。

tabbarController.ViewControllerSelected -= OnTabbarControllerItemSelected;

这从根本上来说是一个设计问题-如果由于某种原因无法读取文件,您的方法应该怎么做?返回一个特殊字符串,例如“ Error”?返回public static String readTxt(String filePath) { // Here you promise to return a String try { ... if(file.isFile() && file.exists()) { ... return lineTxt; // Here you return a String as promised } else { // Here you're missing either return or throw } } catch (Exception e) { // Here you're missing either return or throw } } 吗?失败抛出和异常?还有吗?

向自己回答,这将使您清楚如何修复代码。

答案 1 :(得分:0)

您应遵循一些最佳做法,以防止将来出现错误。我试图掩盖它们。并不是说我的是完美的,但您会明白的。

3