如何在 Java 中调用另一个 class 的方法?

How do I call a method from another class in Java?

这是我的 3 个 classes:它们是主要方法,dog class 和 getFee class。

主要方法

package test;

import java.util.Scanner;
import pets.Dog;
import Utilities.FeeCalculator;

public class TestKennel 
{
    public static void main(String[] args) 
    {   
        Scanner input = new Scanner(System.in);

        Dog dog = new Dog();

        System.out.println("Hello " + dog.name + ", who's a good dog?");

        dog.talk(); 

        FeeCalculator getFeeStatment = new FeeCalculator();

        getFeeStatement.getFee();

        input.close();
    }

}

狗Class

package pets;

public class Dog 
{
    public String name = "Fido";
    public byte age = 10;
    public void talk()
    {
        System.out.println("Woof Woof Woof!!!");
        System.out.println("I am " + age * 7 + " the equivalent of human years old.");
    }
}

最后是 getFee Class

package Utilities;

import pets.Dog;
import java.util.Scanner;

public class FeeCalculator 
{
    double dailyRate;

    public String getFee(Dog dog, Scanner input)
    {
        System.out.println();
        System.out.println();

        System.out.println("What is the name of your pet?");
        dog.name = input.next();

        System.out.println("Input how many days your pet will be staying.");
        int numberOfDays = input.nextInt();

        String feeStatement = "The cost for boarding "
                                + dog.name
                                + " for "
                                + numberOfDays
                                + " days is $" + numberOfDays * dailyRate;

        return feeStatement;
    }
}

在main方法部分,eclipse为什么报错?这不是我调用方法的方式吗?:

FeeCalculator getFeeStatment = new FeeCalculator();

getFeeStatement.getFee();

我们将不胜感激!

FeeCalculator class 有带两个参数的方法 getFee()

public String getFee(Dog dog, Scanner input){}

您需要传递参数才能调用它。

改变

getFeeStatement.getFee();

getFeeStatement.getFee(dog,input );

变量名也不同,FeeCalculator getFeeStatment = new FeeCalculator();getFeeStatement.getFee(dog, input);getFeeStatment

的拼写错误

你必须像这样传递方法参数:

getFeeStatement.getFee(dog, input);
getFee(dog,input); 

--> Returns 一个字符串所以用它做点什么:-)

例如:

String s = getFeeStatement.getFee(dog, input); System.out.println(s);

由于原型是

public String getFee(Dog dog, Scanner input)

您的调用 getFeeStatement.getFee(); 需要两个参数,一个是 Dog 类型,另一个是 Scanner 类型。

根据您的代码,我认为您需要传递的是 getFeeStatement.getFee(dog, input);

此外,如果您需要保存从此函数获得的值,请记住将此语句分配给 String 变量。希望这有帮助。

如果您提供了 eclipse 抛出的错误,将会很有帮助。例如,您遇到错误的一个原因可能是拼写错误。检查您的初始化参数或不传递参数,但我怀疑是前者。你有:

FeeCalculator getFeeStatment = new FeeCalculator();
getFeeStatement.getFee();

现在,变量 getFeeStatment 不同于 getFeeStatement检查拼写。另一个是您的方法调用中没有参数。方法签名显示您需要两个参数。您需要传递两个参数才能工作。

P.S。也不要在包名中使用大写。 Java 包名使用小写字母是惯例。

要么在 TestKennel class 中为方法 getFee(); 添加参数,要么在 FeeCalculator Class 中实现 getFee(); 方法而不带参数!