我在使用非静态方法时遇到问题。我试图从一个方法中获取“侧面”变量的值,并将它们插入另一个将计算面积的方法中。有没有办法在不将方法更改为静态的情况下执行此操作?这里之前回答的问题都没有帮助,我的教科书也没有帮助。
import java.util.*;
public class CubeVolume
{
int side1;
int side2;
int side3;
public void getSides()
{
Scanner input = new Scanner(System.in);
System.out.println("Enter the length of side1");
side1 = input.nextInt();
System.out.println("Enter the length of side2");
side2 = input.nextInt();
System.out.println("Enter the length of side3");
side3 = input.nextInt();
}
public int getVolume(int side1, int side2, int side3)
{
int volume = side1 * side2 * side3;
return volume;
}
public static void main(String[] args)
{
CubeVolume cube = new CubeVolume();
cube.getSides();
cube.getVolume(side1, side2, side3);
}
}
我认为问题在于我的方法调用cube.getVolume(side1, side2, side3);因为编译器告诉我不能从静态上下文中引用非静态变量。
最佳答案
如果您想在 main() 中使用方法,那么这些方法必须是静态,因为 main() 是静态的。所以你的方法应该声明为:
public static void getSides() { .... }
public static int getVolume(int side1, int side2, int side3) { .... }
但是,如果您告诉类的实例从 main() 方法中的非静态方法开始,则可以避免这一切:
public static void main(String[] args) {
new CubeVolume().startApp(args);
}
private void startApp(String[] args) {
CubeVolume cube = new CubeVolume();
cube.getSides();
cube.getVolume(side1, side2, side3);
}
现在类中的其他方法不需要是静态的,因为您不是从 static main() 调用它们。
关于java - 将值从一个非静态方法传递到另一个主方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54272655/