java 调用方法失败,因为方法未定义

java calling method fails as method undefined

我写了一个方法来检查特定文件以计算它有多少行:

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;
        }

但是当我尝试从另一个 class 调用它时,我收到错误消息“该方法未定义该类型”

public class Test 
{
    public static void main(String[] args)
{
System.out.println(countFileRecords());
}

我还在学习java,我想我需要做点什么来告诉这个class该叫什么。

我希望能够调用 运行 检查文件当前行数的方法 - 但我认为所有信息都在该方法中,所以这应该可以工作。我想了解为什么没有这样我可以更正它。谢谢

public class Test 
{
    public static void main(String[] args)
{
System.out.println(countFileRecords());
}

像这样调用方法(仅使用调用它的方法的名称)不会编译,您可以在静态方法中调用同一个 class 中的另一个静态方法,或导入的静态方法在另一个 class.

中声明

因此您应该在声明中将 countFileRecords 方法设为静态(添加 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());
    }
}