Java 如何修复此返回编译错误?
出现以下错误,我不确定如何解决:Java 如何修复此返回编译错误?,java,Java,出现以下错误,我不确定如何解决: This method must return a result of type String 当“stringresult=fileRead(0,“months.txt”);”=0时,程序应该打印文件“months.txt”的所有行。当我指定要输出的行时,它可以在没有巨大if-else的情况下工作,但我不知道如何让它像这样工作 import java.util.Scanner; import java.io.File; import java.io.
This method must return a result of type String
当“stringresult=fileRead(0,“months.txt”);”=0时,程序应该打印文件“months.txt”的所有行。当我指定要输出的行时,它可以在没有巨大if-else的情况下工作,但我不知道如何让它像这样工作
import java.util.Scanner;
import java.io.File;
import java.io.IOException;
public class methodsExceptions1 {
public static void main(String[] args) throws IOException {
String result = fileRead(0, "months.txt");
System.out.println(result);
}
public static String fileRead(int line, String f) throws IOException {
File myFile = new File("months.txt");
Scanner inputFile = new Scanner(myFile);
if (line == 0 && inputFile.hasNextLine()) {
System.out.println(inputFile.nextLine());
} else {
String lineRead = "";
for (int i = 0; i < line; i++) {
if (inputFile.hasNextLine()) {
lineRead = inputFile.nextLine();
} else {
return "FILE READ ERROR: There are only " + i + " lines of text in this file";
}
}
inputFile.close();
return lineRead;
}
}
}
import java.util.Scanner;
导入java.io.File;
导入java.io.IOException;
公共类方法概念1{
公共静态void main(字符串[]args)引发IOException{
字符串结果=fileRead(0,“months.txt”);
系统输出打印项次(结果);
}
公共静态字符串fileRead(int行,字符串f)引发IOException{
File myFile=新文件(“months.txt”);
扫描仪输入文件=新扫描仪(myFile);
if(line==0&&inputFile.hasNextLine()){
System.out.println(inputFile.nextLine());
}否则{
字符串lineRead=“”;
对于(int i=0;i
您的方法只返回else
分支中的字符串。如果line==0&&inputFile.hasNextLine()
为true,则不返回任何内容
要修复错误,请在正分支中返回某些内容,或引发异常
可能您打算返回
inputFile.nextLine()
,而不是打印它。如果将return
语句放在If或If-else或else块中,则会出现此类错误
因此,您还应该从这些块中编写一个return
语句。(此外,一些编辑器会在编码期间阻止此代码)
公共类方法概念1{
...
...
公共静态字符串fileRead(int行,字符串f)引发IOException{
File myFile=新文件(“months.txt”);
扫描仪输入文件=新扫描仪(myFile);
if(line==0&&inputFile.hasNextLine()){
System.out.println(inputFile.nextLine());
}否则{
字符串lineRead=“”;
对于(int i=0;i
你的方法是个骗子。通过它的签名,您可以期望它从文件中读取某些内容并将其作为字符串对象返回。但在一种情况下,它不返回任何内容,并将某些内容打印到控制台。他在骗你。避免方法中的副作用
如果您的方法只返回字符串,则可以对此进行改进。让方法的调用方决定是否打印此字符串
而不是
if (line == 0 && inputFile.hasNextLine())
System.out.println(inputFile.nextLine());
做
如果代码格式正确,缩进良好,我想很明显,并非所有路径都返回值。看起来您还没有决定是打印行还是返回行。如果不使用,为什么要传递参数
String f
?当方法为0时,它应该使用第一个,否则它应该使用else。是的!这已经修复了它,谢谢,尽管它只输出txt文件的第一行,而我希望它输出文件的全部内容。是的,尽管它只打印txt文件的第一行,它应该打印整个文件,但它已经工作了。在这种情况下,请让您的方法在打印该行后返回null。而且它肯定应该有一个不同的名字来反映它的副作用。这是个坏习惯。非常感谢你的帮助!是的,谢谢你,虽然它只是打印出txt文件的第一行,它应该打印整个文件,但它已经工作了。
if (line == 0 && inputFile.hasNextLine())
System.out.println(inputFile.nextLine());
if (line == 0 && inputFile.hasNextLine()) {
return inputFile.nextLine();