java - 将值从一个非静态方法传递到另一个主方法?

标签 java methods static non-static

我在使用非静态方法时遇到问题。我试图从一个方法中获取“侧面”变量的值,并将它们插入另一个将计算面积的方法中。有没有办法在不将方法更改为静态的情况下执行此操作?这里之前回答的问题都没有帮助,我的教科书也没有帮助。

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);因为编译器告诉我不能从静态上下文中引用非静态变量。

最佳答案

如果您想在 ma​​in() 中使用方法,那么这些方法必须是静态,因为 ma​​in() 是静态的。所以你的方法应该声明为:

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/

相关文章:

Java 二维 boolean 数组值

java - 模拟类,Java

java - 从另一个类调用方法

java - 如何将多个对象分配给另一个类/对象?

javascript - javascript中的Date.UTC()方法是否创建本地时区或GMT

java - 如何按名称从 BlobStore 读取文件

c++ - 如何在不传递类实例的情况下从静态成员函数调用非静态成员函数

java - java中如何在另一个类的静态方法中调用非静态方法?

java - 同步静态方法与同步类对象

java - Android Json 解析出现错误