Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在主应用程序中使用数组参数调用函数?_Java_Inheritance - Fatal编程技术网

Java 如何在主应用程序中使用数组参数调用函数?

Java 如何在主应用程序中使用数组参数调用函数?,java,inheritance,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; }

我一直在做一些关于继承抽象类的教程,我将一个数组传递给一个函数来计算总价。但是,当我尝试在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;
}
公共双计算(字符串[]a,整数[]数量,整数){
int i=0;

对于(i=0;i主方法是静态的,不能调用非静态代码。您有两种解决方案

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

  • 使
    calcPrice
    static

我建议你选择一个选项,因为你一直在研究课程。这对你来说是一个很好的实践

也不要将变量
a
“a”
=
进行比较。请改用
.equals
。了解原因

编辑:

我不确定抽象类是如何实现的,因为您没有需要实现的抽象方法

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};
    }
}
公共类CalcClass{
公共双计算器(字符串[]a,整数[]数量,整数){
int i=0;

对于(i=0;i主方法是静态的,不能调用非静态代码。您有两种解决方案

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

  • 使
    calcPrice
    static

我建议你选择一个选项,因为你一直在研究课程。这对你来说是一个很好的实践

也不要将变量
a
“a”
=
进行比较。请改用
.equals
。了解原因

编辑:

我不确定抽象类是如何实现的,因为您没有需要实现的抽象方法

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};
    }
}
公共类CalcClass{
公共双计算器(字符串[]a,整数[]数量,整数){
int i=0;
对于(i=0;i更改为-

public static double calcPrice(String[] a, int[] qty, int num){
    ...
}
您应该在从main调用之前创建一个对象。假设您有一个类-

public class Test {

    public void someMethod(){

    }

    public static void main(String... args){

      // Create an object first
      Test t = new Test();

      // Now you can use that non-static method someMethod
      t.someMethod();

    }

}
对于静态方法,它们存在于负载上。

更改为-

public static double calcPrice(String[] a, int[] qty, int num){
    ...
}
您应该在从main调用之前创建一个对象。假设您有一个类-

public class Test {

    public void someMethod(){

    }

    public static void main(String... args){

      // Create an object first
      Test t = new Test();

      // Now you can use that non-static method someMethod
      t.someMethod();

    }

}

对于静态方法,它们存在于加载状态。

您需要创建实例才能调用您的方法,因为您的方法不是静态的

使Methods为静态将使您能够在不创建类实例的情况下使用它


您可能需要阅读有关

的内容,因为您的方法不是静态的,所以需要创建实例才能调用您的方法

使Methods为静态将使您能够在不创建类实例的情况下使用它


您可能想了解

我想使用选项1,但是我必须创建另一个非抽象类吗?或者我应该只使用主类吗?创建一个单独的类。您不能创建抽象类的实例。我将在回答中演示。我想使用选项1,但我必须创建另一个非抽象类吗ct?或者我应该只使用主类?创建一个单独的类。你不能创建抽象类的实例。我将在我的答案中演示。在继承方面,静态还是非静态很重要?@deenaiena请看这里:错误消失了,我试了几次,现在没事了:)@Deenainea我很高兴听到。在继承方面,静态还是非静态很重要?@Deenainea看这里:错误消失了,我试了几次,现在没事了:)@Deenainea我很高兴听到。谢谢你的链接和帮助,我会尝试:)谢谢你的链接和帮助,我会尝试:)