如何将此静态引用修复为非静态方法?
How to fix this static reference to a non-static method?
这是我的问题。当我使用 addCar(carobject) 时,它说我正在对非静态方法进行静态引用。如何调用main方法中的方法?我希望能够在括号中使用我的对象调用方法 addcar()。在我看来它应该可以工作。
package Lab2;
/*********************************************************************
//Race.java
//
//Race class defines what the race object is
//and what it can do.
//********************************************************************
*/
public class Race {
public double distance;
public String raceType;
public Car[] carsEntered = new Car[3];
final int DEFAULTNUMBEROFCARS = 3;
public static void main(String[] args) {
int carCount = 0;
String winner;
Car myCar = new Car("Chase", 75);
Car ProfCar = new Car("Prof. Harms", 85);
Car JeffCar = new Car("Jeff Gordan", 100);
addCar(myCar);
}
/**
* Changes the distance of the race.
*/
public void changeDistace(double newDistance) {
distance = newDistance;
}
/**
* Changes the Type of the race.
*/
public void changeRaceType(String newRaceType) {
raceType = newRaceType;
}
/**
* Adds a new car to the Race.
*/
public void addCar(Car newCar) {
boolean carPlaced = false;
for(int i=0; i<DEFAULTNUMBEROFCARS;i++) {
if(carPlaced == false) {
if(carsEntered[i] == null) {
carsEntered[i] = newCar;
carPlaced = true;
}
}
}
}
public String getRaceType() {
return raceType;
}
/**
* Prints the cars in the race.
*/
public void getCarsEntered() {
for(int i=0;i<carsEntered.length; i++) {
System.out.println("Owner: " + carsEntered[i].getOwner());
}
}
}
这是因为您在静态的 main 方法中调用 addCar
,addCar
不是。
如果你想从你的main中调用一个方法,那么你必须声明这个方法是静态的。
但是,更好的方法是在您的 main 中实例化一个构造函数,然后简单地从该构造函数中调用该方法。静电是邪恶的。
这是我的问题。当我使用 addCar(carobject) 时,它说我正在对非静态方法进行静态引用。如何调用main方法中的方法?我希望能够在括号中使用我的对象调用方法 addcar()。在我看来它应该可以工作。
package Lab2;
/*********************************************************************
//Race.java
//
//Race class defines what the race object is
//and what it can do.
//********************************************************************
*/
public class Race {
public double distance;
public String raceType;
public Car[] carsEntered = new Car[3];
final int DEFAULTNUMBEROFCARS = 3;
public static void main(String[] args) {
int carCount = 0;
String winner;
Car myCar = new Car("Chase", 75);
Car ProfCar = new Car("Prof. Harms", 85);
Car JeffCar = new Car("Jeff Gordan", 100);
addCar(myCar);
}
/**
* Changes the distance of the race.
*/
public void changeDistace(double newDistance) {
distance = newDistance;
}
/**
* Changes the Type of the race.
*/
public void changeRaceType(String newRaceType) {
raceType = newRaceType;
}
/**
* Adds a new car to the Race.
*/
public void addCar(Car newCar) {
boolean carPlaced = false;
for(int i=0; i<DEFAULTNUMBEROFCARS;i++) {
if(carPlaced == false) {
if(carsEntered[i] == null) {
carsEntered[i] = newCar;
carPlaced = true;
}
}
}
}
public String getRaceType() {
return raceType;
}
/**
* Prints the cars in the race.
*/
public void getCarsEntered() {
for(int i=0;i<carsEntered.length; i++) {
System.out.println("Owner: " + carsEntered[i].getOwner());
}
}
}
这是因为您在静态的 main 方法中调用 addCar
,addCar
不是。
如果你想从你的main中调用一个方法,那么你必须声明这个方法是静态的。
但是,更好的方法是在您的 main 中实例化一个构造函数,然后简单地从该构造函数中调用该方法。静电是邪恶的。