我写了一个方法来检查一个特定的文件,以计算它有多少行:
public int countFileRecords()
{
Scanner in = new Scanner (new FileInputStream("src/data/VinylRecords.txt"));
int lines = -1;
while (in.hasNextLine()) //loop while there is a new line
{lines +=1; // add one to my counter
in.nextLine();} // move to the next line and loop again
return lines;
}
但是当我尝试从另一个类调用它时,我得到一个错误"类型的方法是未定义的">
public class Test
{
public static void main(String[] args)
{
System.out.println(countFileRecords());
}
我还在学习java,我想我需要做点什么来告诉这个班该调用什么。
我希望能够调用并运行该方法来检查当前文件中的行数-但是我认为所有的信息都在方法中,所以这应该可以工作。我想知道为什么没有,这样我就可以纠正它。谢谢。
public class Test
{
public static void main(String[] args)
{
System.out.println(countFileRecords());
}
像这样调用方法(只使用调用它的方法名)将不会编译,您可以在静态方法中调用同一类中的另一个静态方法,或者在另一个类中声明的导入静态方法。
所以你应该在声明中将countFileRecords方法设置为static(添加static关键字),然后使用import static导入,可以直接使用方法名调用它:
package com;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Main {
public static int countFileRecords()
{
Scanner in=null;
try {
in = new Scanner(new FileInputStream("src/data/VinylRecords.txt"));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
int lines = -1;
while (in.hasNextLine()) // loop while there is a new line
{
lines += 1; // add one to my counter
in.nextLine();
} // move to the next line and loop again
return lines;
}
}
package com;
import static com.Main.countFileRecords;
public class Test {
public static void main(String[] args) {
System.out.println(countFileRecords());
}
}