“线程中的异常”;“主要”;已完成程序中的java.lang.NullPointerException
我得到了一个我认为已经完成的程序,现在java正在把它强加给我 我得到的错误如下:“线程中的异常”;“主要”;已完成程序中的java.lang.NullPointerException,java,exception,Java,Exception,我得到了一个我认为已经完成的程序,现在java正在把它强加给我 我得到的错误如下: Exception in thread "main" java.lang.NullPointerException at hirecardemo.HireCar.isAvailable(HireCar.java:68) at hirecardemo.HireCarDemo.runSimulation(HireCarDemo.java:49) at hirecardemo.HireCarDe
Exception in thread "main" java.lang.NullPointerException
at hirecardemo.HireCar.isAvailable(HireCar.java:68)
at hirecardemo.HireCarDemo.runSimulation(HireCarDemo.java:49)
at hirecardemo.HireCarDemo.main(HireCarDemo.java:25)
Java Result: 1
主要类别:
package hirecardemo;
import java.util.Random;
public class HireCarDemo {
public static void main(String[] args) {
HireCar car0 = new HireCar("Toyota", "AV77 FGJ", 6000, 12300, 41500);
HireCar car1 = new HireCar("Mercedes", "DI99 FTZ", 6700, 7000, 91800);
HireCar car2 = new HireCar("Toyota", "FG82 FTP", 25000, 12000, 72000);
HireCar car3 = new HireCar("Vauxhall", "TW56 LTS", 10000, 11000, 19001);
HireCar car4 = new HireCar("Ford", "TD85 LTU", 13000, 12300, 12000);
HireCar car5 = new HireCar("Susuki", "GU12 UTJ", 12000, 10000, 50000);
HireCar[] fleet = {car0, car1, car2, car3, car4, car5};
int minMileage = 1000;
int maxMileage = 60000;
int numberOFevents = 12;
String [] results = HireCarDemo.runSimulation(fleet, numberOFevents,
minMileage, maxMileage);
for(int i = 0; i < numberOFevents; i++) {
System.out.println(results[i]);
}
}
/**
* @param fleet the fleet of hire cars
* @param numberOFevents the size of the events table to be generated
* @param minMileage the assumed minimum mileage driven by any hired
* car
* @param maxMileage the assumed maximum mileage driven by any hired
* car
* @return table of events generated during the simulation
*/
public static String[] runSimulation(HireCar [] fleet, int numberOFevents,
int minMileage, int maxMileage) {
int n = fleet.length; // Number of cars in the fleet.
Random carGenerator = new Random();
String [] events = new String [numberOFevents];
for(int i = 0; i < numberOFevents; i++) {
int randomNumber = carGenerator.nextInt(n-1);
if(fleet[randomNumber].isAvailable() == true)
{
fleet[randomNumber].hireOut();
events[i] = fleet[randomNumber].getRegNumber() + " <HIRE OUT>";
}
else if(fleet[randomNumber].isOnHire() == true)
{
Random mileage = new Random();
int randomMileage = mileage.nextInt(maxMileage - minMileage);
if(fleet[randomNumber].isBeingServiced() == true)
{
events[i] = fleet[randomNumber].getRegNumber() +
" <RETURN FROM HIRE>" + " <SEND FOR SERVICE>";
} else {
events[i] = fleet[randomNumber].getRegNumber() +
" <RETURN FROM HIRE>";
}
}
else
{
fleet[randomNumber].makeAvailable();
events[i] = fleet[randomNumber].getRegNumber() +
" <RETURN FROM SERVICE>";
}
}
return events;
}
}
package-hirecardmo;
导入java.util.Random;
公共类HireCarDemo{
公共静态void main(字符串[]args){
HireCar car0=新HireCar(“丰田”,“AV77 FGJ”,60001230041500);
HireCar car1=新HireCar(“梅赛德斯”,“DI99 FTZ”,670070091800);
HireCar car2=新HireCar(“丰田”,“FG82 FTP”,250001200072000);
HireCar car3=新的HireCar(“沃克斯霍尔”,“TW56 LTS”,10000,11000,19001);
HireCar car4=新的HireCar(“福特”,“TD85 LTU”,13000,12300,12000);
HireCar car5=新的HireCar(“Susuki”,“GU12 UTJ”,12000,10000,50000);
HireCar[]车队={car0,car1,car2,car3,car4,car5};
int最小里程=1000;
int最大里程=60000;
int numberOFevents=12;
String[]results=HireCarDemo.runSimulation(震源组、numberOFevents、,
最小里程,最大里程);
for(int i=0;i
下面是我的单独课程,与此相关:
//******************************************************************************
// HireCar.java Author: Ryan Holder
//
// Represents the car hire company's fleet of cars and the information on them.
//******************************************************************************
package hirecardemo;
public class HireCar {
private String manufacturer, regNumber, carStatus;
private int mileage, serviceInterval, lastService; // All in miles.
private boolean serviceDue() {
if((mileage- lastService) >= serviceInterval) {
this.sendForService();
return true;
} else {
return false;
}
}
private void sendForService() {
carStatus = "Servicing";
}
//--------------------------------------------------------------------------
// Default Constructor: Sets information for a new car.
//--------------------------------------------------------------------------
public HireCar(String demoManufacturer, String demoRegNumber) {
manufacturer = demoManufacturer;
regNumber = demoRegNumber;
carStatus = "Available";
serviceInterval = 0;
lastService = 0;
mileage = 0;
}
public HireCar(String demoManufacturer, String demoRegNumber,
int demoMileage, int demoServiceInterval, int lastInterval) {
manufacturer = demoManufacturer;
regNumber = demoRegNumber;
mileage = demoMileage;
}
public void setMileage(int demoMileage) {
mileage = demoMileage;
}
public void setServiceInterval(int demoServiceInterval) {
serviceInterval = demoServiceInterval;
}
public void setLastService(int demoLastService) {
lastService = demoLastService;
}
public String getRegNumber() {
return regNumber;
}
public void makeAvailable() {
carStatus = "Available";
}
public boolean isAvailable() {
if(carStatus.equals("Available") || carStatus.equals("Return from Service")) {
return true;
} else {
return false;
}
}
public boolean isOnHire() {
if(carStatus.equals("On Hire")) {
return true;
} else {
return false;
}
}
public boolean isBeingServiced() {
if(carStatus.equals("Being Serviced")) {
return true;
} else {
return false;
}
}
public void hireOut() {
carStatus = "On Hire";
}
public void returnFromHire() {
if(this.serviceDue() == true) {
carStatus = "Being Serviced";
} else {
carStatus = "Available For Hire";
}
}
public void returnFromService() {
carStatus = "Return From Service";
}
public String ToString() {
return("Manufacturer: <" + this.manufacturer + ">/n "
+ "Registration Number: <" + this.regNumber + ">/n"
+ "Mileage: <" + this.mileage + ">/n"
+ "Service Interval: <" + this.serviceInterval + "</n"
+ "Last Service: <" + this.lastService + "</n"
+ "Status: <" + this.carStatus + "</n");
}
}
//******************************************************************************
//java作者:Ryan Holder
//
//表示汽车租赁公司的车队及其相关信息。
//******************************************************************************
包装Hirecardmo;
公营直升机{
私有字符串制造商、regNumber、carStatus;
私人整数英里数,服务间隔,最后服务;//所有单位为英里。
私有布尔serviceDue(){
如果((里程-上次保养)>=保养间隔){
这是sendForService();
返回true;
}否则{
返回false;
}
}
私有void sendForService(){
carStatus=“服务”;
}
//--------------------------------------------------------------------------
//默认构造函数:设置新车的信息。
//--------------------------------------------------------------------------
公共HireCar(字符串demoManufacturer、字符串demoRegNumber){
制造商=制造商;
regNumber=demoRegNumber;
carStatus=“可用”;
服务间隔=0;
lastService=0;
里程=0;
}
公共HireCar(字符串demoManufacturer、字符串demoRegNumber、,
int demoMileage,int demoServiceInterval,int lastInterval){
制造商=制造商;
regNumber=demoRegNumber;
里程=行驶里程;
}
公共无效设置里程(整数里程){
里程=行驶里程;
}
public void setServiceInterval(int demoServiceInterval){
serviceInterval=demoServiceInterval;
}
公共void setLastService(int demoLastService){
lastService=demoLastService;
}
公共字符串getRegNumber(){
返回注册表号;
}
public void makeAvailable(){
carStatus=“可用”;
}
公共布尔值isAvailable(){
if(carStatus.equals(“可用”)| | carStatus.equals(“服务返回”)){
返回true;
}否则{
返回false;
}
}
公共布尔值isOnHire(){
if(carStatus.EQUALES(“租用时”)){
返回true;
}否则{
返回false;
}
}
公共布尔值正在被服务(){
if(carStatus.equals(“正在服务”)){
返回true;
}否则{
返回false;
}
}
公屋出租{
carStatus=“租用时”;
}
公共无效returnFromHire(){
if(this.serviceDue()==true){
carStatus=“正在维修”;
}否则{
carStatus=“可供租用”;
}
}
public void returnFromService(){
carStatus=“从服务返回”;
}
公共字符串到
^^^ This is **null** as it is not initialized yet, Thus **NPE**.
public HireCar(String demoManufacturer, String demoRegNumber,
int demoMileage, int demoServiceInterval, int lastInterval) {
manufacturer = demoManufacturer;
regNumber = demoRegNumber;
mileage = demoMileage;
carStatus="someval" ; //initialize carStatus here
}
new HireCar("Toyota", "AV77 FGJ", 6000, 12300, 41500);
public HireCar(String demoManufacturer, String demoRegNumber,
int demoMileage, int demoServiceInterval, int lastInterval) {
manufacturer = demoManufacturer;
regNumber = demoRegNumber;
mileage = demoMileage;
}
fleet[randomNumber].isAvailable()
if(carStatus.equals("Available") || carStatus.equals("Return from Service"))
^^^
This is null here
public boolean isAvailable() {
if(carStatus.equals("Available") || carStatus.equals("Return from Service")) {
return true;
} else {
return false;
}
}