java - 如何在主应用程序中调用带有数组参数的函数?

标签 java inheritance

我一直在做一些关于继承抽象类的教程,并将一个数组传递给一个函数来计算总价。但是,当我尝试在 main 中调用该函数时,它不起作用,并且根据方法调用我遇到了一些错误。

这是我在子类中的计算代码:

public double calcPrice(String[] a, int[] qty, int num){
    int i =0;
    for(i=0;i<=num;i++) { 
        if (a[i]=="a")
            price=24.90;
    }

    double tot=price+qty[i];
    return tot;
}

这是我在 for 循环中调用的方法。我不知道如何调用该方法,因为错误显示“无法从静态上下文引用非静态方法 calcPrice()

for(int i=0;i<=num;i++) {
    System.out.println("\t"+a[i]+"\t\t\t"+qty[i]+" "+calcPrice());
 }

最佳答案

main方法是静态的,不能调用非静态代码。您有 2 个解决方案。

  • 创建执行计算的类的实例,并在该实例上调用 calcPrice

  • 使 calcPrice 静态。

我建议选择一,因为您一直在对类(class)进行研究。这对你来说是一个很好的练习。

也不要将变量 a"a"== 进行比较。使用 .equals 代替。 Check this link为什么。

编辑:

我不确定抽象类如何发挥作用,因为您没有需要实现的抽象方法。

public class CalcClass{
    public double calcPrice(String[] a, int[] qty, int num){
        int i =0;
        for(i=0;i<=num;i++) { 
            if ("a".equals(a[i]))
               price=24.90;
        }

        double tot=price+qty[i];
        return tot;
    }
}

public class MainClass{
    public static void main(String[] args){
        //create instance of calc class
        CalcClass c = new CalcClass();
        //call calc price method on calcclass
        c.calcPrice(a, new int[]{1}, 1};
    }
}

关于java - 如何在主应用程序中调用带有数组参数的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18319804/

相关文章:

java - 'final' 字段修饰符在不可变类中是多余的吗?

java - TextToSpeech 动态交互

java - 尝试以一定的时间间隔在网页上打印,但它一直在等待并立即打印

ios - 如何继承UIStoryboard

c++ - 基于公共(public)参数调用某些类的构造函数c++

PHP: "Call to undefined method"... 但方法已定义?

java - 网格 : How to make hub password protected

java - 使用@Cacheable 注释时忽略预加载的 Ehcache

Ruby 错误处理 : Rescuing Exceptions in Subclasses

javascript - 执行从 Javascript 构造函数数组访问的构造函数父级的 "static"方法