Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.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 无法从静态上下文引用非静态方法getCostPerSquareKilometer()_Java - Fatal编程技术网

Java 无法从静态上下文引用非静态方法getCostPerSquareKilometer()

Java 无法从静态上下文引用非静态方法getCostPerSquareKilometer(),java,Java,我已经看完了所有的副本。我的大脑不知怎么搞不懂。基本上,我尝试从不同的类调用一个方法,然后在计算中使用该方法的值。然而,这个问题似乎不断出现在我身上。我真的需要帮助,我已经做了两个多小时了 下面是我试图将该方法导入的代码 /* Alex Pedersen V 0.1 13 - 02 - 2015 Forest Aflevering */ public class Forest { /* Strings */ private String name; private String

我已经看完了所有的副本。我的大脑不知怎么搞不懂。基本上,我尝试从不同的类调用一个方法,然后在计算中使用该方法的值。然而,这个问题似乎不断出现在我身上。我真的需要帮助,我已经做了两个多小时了

下面是我试图将该方法导入的代码

/* Alex Pedersen V 0.1 13 - 02 - 2015 Forest Aflevering */
  public class Forest {

  /* Strings */
  private String name;
  private String location;

  /* Integers */
  private int squareMeters;
  private int price;
  private int totalcost;

  /* Reference types */
  private Owner forestOwner;
  private Tree newtree;
  private Tree sumcost;
  private Tree costPerSquareKilometer;

    /* Constructor med parametere */
    public Forest(String nameInput, String locationInput, int sizeOfForest, int pricePerSquare) {
      /* Initialisering af instans variabler */
      name = nameInput;
      location = locationInput;
      squareMeters = sizeOfForest;
      price = pricePerSquare;
      totalcost = 0;
    }

    /* Constructor uden parametere */
    public Forest() {
      /* Initialisering af instans variabler */
      name = "Rold Skov";
      location = "Nordjylland";
      squareMeters = 4000;
      price = 100;
      totalcost = 0;
    }

      /* ## ACCESORS ## */

      /* String Returns */
      public String getName() {
        return name;
      }

      public String getLocation() {
        return location;
      }

      public Owner getForestOwner() {
        return forestOwner;
      }

      /* Int Returns */
      public int getSquareMeters() {
        return squareMeters;
      }

      public int getPrice() {
        return price;
      }

      public Tree getCostPerSquareKilometer() {
        return costPerSquareKilometer;
      }

      /* ## MUTATORS ## */

      /* String Mutators */
      public void setName(String newNameInput) {
        name = newNameInput;
      }

      public void setLocation(String newLocation) {
        location = newLocation;
      }

      /* Int Mutators */
      public void setSquareMeters(int newSquareMeters) {
        squareMeters = newSquareMeters;
      }

      public void setPrice(int newPrice) {
        price = newPrice;
      }

      /* Reference String Mutators */
      public void setForestOwner(Owner newForestOwner) {
        forestOwner = newForestOwner;
      }

      public void setTree(Tree newTree) {
        newtree = newTree;
      }

      public void setCostPerSquareKilometer() {
        Tree sumcost = new Tree();

        costPerSquareKilometer = Tree.getCostPerSquareKilometer();

      }

      /* ## PRINTS ## */
      public void printForest() {
        System.out.println("Forest Owner: " + forestOwner + "\nName: " + name + "\nLocation: " + location + "\n Square Meters: " + squareMeters + "\n Price: " + price);
      }

      public void printForest2() {
        if (newtree != null) {
          System.out.println("Tree: " + newtree + "\nForest Owner: " + forestOwner + "\nName: " + name + "\nLocation: " + location + "\n Square Meters: " + squareMeters + "\n Price:" + price);
        }
        else {
          System.out.println("No trees in this program :(!");
        }

      }
  }
下面是我试图从中导入getCostPerSquareKilometer的代码

public class Tree {

/* Strings */
private String sort;

/* Integers */
private int lifespan;
p int costPerSquareKilometer;
private int revenuePerSquareKilometer;

    public Tree() {
        /* Initialisering af variabler */
        sort = "Aske";
        lifespan = 100;
        costPerSquareKilometer = 1000;
        revenuePerSquareKilometer = 2000;
    }

    public Tree(String sortInput, int lifepanInput, int costPerSquareKilometerInput, int revenuePerSquareKilometerInput, int squareMetersInput) {
        sort = sortInput;
        lifespan = lifepanInput;
        costPerSquareKilometer = costPerSquareKilometerInput;
        revenuePerSquareKilometer = revenuePerSquareKilometerInput;
    }

    /* ## ACCESORS ## */

    /* String Returns */
    public String getSort() {
        return sort;
    }

    /* Int Returns */
    public int getLifespan() {
        return lifespan;
    }

    public int getCostPerSquareKilometer() {
        return costPerSquareKilometer;
    }

    public int getRevenuePerSquareKilometer() {
        return revenuePerSquareKilometer;
    }

    /* ## MUTATORS ## */

    /* String Mutators */
    public void setSort(String newSort) {
        sort = newSort;
    }

    /* Int Mutators */
    public void setLifespan(int newLifeSpan) {
        lifespan = newLifeSpan;
    }

    /* Double Mutators */
    public void setCostPerSquareKilometer(int newCostPerSquareKilometer) {
        costPerSquareKilometer = newCostPerSquareKilometer;
    }

    public void setRevenuePerSquareKilometer(int newRevenuePerSquareKilometer) {
        revenuePerSquareKilometer = newRevenuePerSquareKilometer;
    }

    /* ## PRINT ## */
    public void printTree() {
        System.out.println("Sort: " + sort + "\nLifespan: " + lifespan + "\nCost per KM^2: " + costPerSquareKilometer + "\nRevenue per KM^2" + revenuePerSquareKilometer);
    }
}

非常感谢您:>

您应该更改您的线路:

costPerSquareKilometer = Tree.getCostPerSquareKilometer();


现在你称之为“像”。这意味着当您将方法定义为非静态时,方法必须是静态的,即定义方法时没有静态关键字。这意味着在您的案例中,您只能在树的对象实例上访问方法,因此使用sumcost实例来访问成本。

错误描述了问题。只能对静态方法进行静态调用。getCostPerSquareKilometer不是静态的,因此不能作为静态引用

  public void setCostPerSquareKilometer() {
    Tree sumcost = new Tree();

    costPerSquareKilometer = Tree.getCostPerSquareKilometer();

  }
更新:

  public void setCostPerSquareKilometer() {
    Tree sumcost = new Tree();

    costPerSquareKilometer = sumcost.getCostPerSquareKilometer();

  }

此更改意味着您将对对象而不是类调用方法

请简要描述问题所在!!!!好的,问题是我不知道如何将GetCostPerSquareKilometer方法值放入我的Forest类中,这样我就可以计算一些东西了。谢谢:我试着看了所有不同的副本,但它们对我来说没有意义。我需要一个我做的具体例子。关于这个有很多问题,但是你应该看看static acutally的意思,知道对象和类之间的区别。一个对象是类的一个实例。我会尝试一下,请稍等,好的先生。它让我知道不兼容的类型:int不能转换为Tree.change private Tree costPerSquareKilometer;至私人内部成本平方公里计;为什么你需要它是树型的?我把它改成了私有的int-costPerSquareKilometer;现在,我得到了一个错误:不能从静态上下文引用非静态方法getCostPerSquareKilometer。我只是不明白我在哪里建立了一个静态上下文。比如说我在哪里做过静电?静态这个词甚至不在我的整个代码中。它在哪一行给出了错误,错误是什么?我已经尝试将它更新为这个,它让我知道不兼容的类型:int不能转换为Tree。提前感谢:>这是因为您的Tree方法为getCostPerSquareKilometer返回一个int,但在您的forest类中,您将其声明为树,然后您尝试将int分配给编译器不知道如何处理的树。我现在设法解决了这一问题,但是我得到了返回的非静态方法getCostPerSquareKilometer不能从静态上下文引用。我只是不明白为什么它告诉我我有一个静态上下文,据我所知,我的代码中甚至没有static这个词。。
  public void setCostPerSquareKilometer() {
    Tree sumcost = new Tree();

    costPerSquareKilometer = sumcost.getCostPerSquareKilometer();

  }