Java 如何在主应用程序中使用数组参数调用函数?
我一直在做一些关于继承抽象类的教程,我将一个数组传递给一个函数来计算总价。但是,当我尝试在main中调用该函数时,它不起作用,并且根据方法调用我遇到了一些错误 下面是我在子类中的计算代码: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; }
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我很高兴听到。谢谢你的链接和帮助,我会尝试:)谢谢你的链接和帮助,我会尝试:)