所以我已经在这个问题上坚持了很长一段时间,我似乎无法找到解决方案。我目前正在开发一个模拟停车场的项目。停车场本身并不是问题所在;它是应该模拟的几种类型的客户。为了让事情变得更容易,我会要求解决一个问题,并且我应该能够自己解决其他问题。 对于初学者来说,需要为拥有停车证的客户创建一个单独的班级,并以一种方式对其进行整合,以显示哪些车辆是停车通行证持有人,哪些不是。
import java.util.Random;
/* creates a boolean called isPass that is randomly picked to be true or false. */
public interface ParkPass {
public Random rnd = new Random();
public boolean isPass = rnd.nextBoolean();
}
这是允许我随机设置停车证的课程。由于模拟是通过不同的类进行的,我所能做的就是创建将Pass设置为true或false的方法;我不能在这堂课中设置Pass本身。
public abstract class Car {
private Location location;
private int minutesLeft;
public boolean isPaying;
public boolean isBlue;
public void setIsPaying(boolean isPaying) {
this.isPaying = isPaying;
}
// added a method to allow us to set the colour of the car to blue for when they have a parking pass.
public void setIsBlue(boolean isBlue) {
this.isBlue = isBlue;
}
这是Car类的一个小片段,显示哪个布尔值属于它,并可能显示我尝试使用此模拟的方向。
public class AdHocCar extends Car implements ParkPass{
public AdHocCar() {
setIsBlue(isPass);
setIsPaying(!isPass);
}
}
这是在模拟进出停车库的汽车时调用的类。在这里你可以看到我尝试实现ParkPass类,以便在Car类中设置Isblue和IsPaying布尔值,这样我就可以在下一段代码中调用这些,这是我目前停留在的模拟视图试图解决。
import javax.swing.*;
import java.awt.*;
public class SimulatorView extends JFrame {
private CarParkView carParkView;
private int numberOfFloors;
private int numberOfRows;
private int numberOfPlaces;
private Car[][][] cars;
public void updateView() {
/* Create a new car park image if the size has changed.
added 2 colours to show the difference between the three different customer types.*/
if (!size.equals(getSize())) {
size = getSize();
carParkImage = createImage(size.width, size.height);
}
Graphics graphics = carParkImage.getGraphics();
for(int floor = 0; floor < getNumberOfFloors(); floor++) {
for(int row = 0; row < getNumberOfRows(); row++) {
for(int place = 0; place < getNumberOfPlaces(); place++) {
Location location = new Location(floor, row, place);
Car car = getCarAt(location);
Color color = car == null ? Color.white : Car.isBlue ? Color.blue /*: isReservation == true ? Color.green*/ :Color.red ;
drawPlace(graphics, location, color);
}
}
}
repaint();
}
在这里,我们终于解决了我一直面临的问题。如果你现在看一下,你可能会注意到很多错误。这是因为经过10个小时的研究和不断更改Color属性后,我有点忘记了我试图实现之前创建的布尔值的确切方式,以显示两种类型客户之间的差异。我对编程没有太大的经验,所以过了一会儿我就放弃了,决定在这里问。
现在提出这个问题,所有这些单独的班级创建他们自己的布尔值我怎样才能确保当我使用模拟时,使用停车通行证的汽车将是蓝色而需要正常支付的汽车显示为红色?
答案 0 :(得分:1)
public interface ParkPass {
public Random rnd = new Random();
public boolean isPass = rnd.nextBoolean();
}
问题出在上述部分。您无法在接口中定义实例变量。这些成员默认为static final
。
将此成员移至Car
类,它将起作用。