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/

相关文章:

javascript - javascript中的函数调用总是一个方法吗

java - 即使使用子类型引用静态字段,也仅初始化父类(super class)

java - 具有多个实例的单例?

java - 将日期对象转换为 yyyy-MM-dd hh :mm:ss

javascript - Javascript 中的模拟方法——它们是如何工作的?

java - 读取fragment中的文件并将其放入listview中

java - Java程序中可以存在两个主要方法吗?

c++ - 基类成员函数内部的静态变量

java - 使用 BouncycaSTLe 生成的 CSR 缺少公钥和属性

java - 不幸的是我的应用程序已停止工作