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();
}