public class ParkingLotApplication {
static Scanner input = new Scanner(System.in);
public static ParkingDescription[][] ParkingLot = new ParkingDescription[3][15];
public StudentDescription StudDesc = new StudentDescription();
static int i = 0;
static int j = 0;
static int parkLevel = 0;
static int parkSlot = 0;
public static void main(String[] args) {
// TODO: Add your code here
ParkingLotApplication PA = new ParkingLotApplication();
PA.menu();
}
public void menu() {
Scanner input = new Scanner(System.in);
System.out.println("WELCOME TO CAR PARK SYSTEM");
System.out.println("Enter your name: ");
String nm = input.nextLine();
System.out.println("Enter your password: ");
int pass = input.nextInt();
if ((nm.equals("admin12")) && (pass == 12345)) {
Login();
} else {
menu();
}
}
public void Login() {
System.out.println("|----------------------------------|");
System.out.println("| Admin Menu |");
System.out.println("|----------------------------------|");
System.out.println("| N- New Registration |");
System.out.println("| U- Update Data |");
System.out.println("|----------------------------------|");
char ch = input.next().charAt(0);
switch (ch) {
case 'N':
case 'n':
Reg();
break;
case 'U':
case 'u':
UpdatePark();
break;
default:
System.out.println("Choose Again!");
Login();
break;
}
}
public void Reg() {
System.out.println();
System.out.println(" **Parking Lot** ");
System.out.println(" ________________________________________________________________________________");
for (i = 0; i < 3; i++) {
for (j = 0; j < 15; j++) {
ParkingLot[i][j] = new ParkingDescription();
System.out.print(" * " + ParkingLot[i][j].getStatus());
}
System.out.println();
System.out.println(" ********************************************************************************");
}
System.out.println("Please insert number 1-3 to choose the parking level");
parkLevel = input.nextInt();
System.out.println("Please insert number 1-15 to choose the parking slot");
parkSlot = input.nextInt();
//check available
if (parkLevel == 1) {
ParkingLot[0][parkSlot - 1] = new ParkingDescription();
if (ParkingLot[0][parkSlot - 1].getAvailable() == true) {
System.out.println("Please Enter tp: ");
int tp = input.nextInt();
System.out.println("Please Enter First Name: ");
String ft = input.next();
System.out.println("Please Enter Last Name: ");
String lt = input.next();
System.out.println("Please Enter Contact Number: ");
int cn = input.nextInt();
System.out.println("Please Enter Email Address: ");
String ea = input.next();
System.out.println("Please Enter Car Number: ");
String cnb = input.next();
System.out.println("Please Enter Date Registered : ");
int date = input.nextInt();
StudDesc.setStudDesc(tp, ft, lt, cn, ea, cnb, date);
int pID = (parkLevel * 1000) + parkSlot;
ParkingLot[0][parkSlot - 1].setPark(pID, false, StudDesc);
System.out.println("Thanks");
menu();
} else {
System.out.println("Sorry");
menu();
}
} else if (parkLevel == 2) {
ParkingLot[1][parkSlot - 1] = new ParkingDescription();
if (ParkingLot[1][parkSlot - 1].getAvailable() == true) {
System.out.println("Please Enter tp: ");
int tp = input.nextInt();
System.out.println("Please Enter First Name: ");
String ft = input.next();
System.out.println("Please Enter Last Name: ");
String lt = input.next();
System.out.println("Please Enter Contact Number: ");
int cn = input.nextInt();
System.out.println("Please Enter Email Address: ");
String ea = input.next();
System.out.println("Please Enter Car Number: ");
String cnb = input.next();
System.out.println("Please Enter Date Registered : ");
int date = input.nextInt();
StudDesc.setStudDesc(tp, ft, lt, cn, ea, cnb, date);
int pID = (parkLevel * 1000) + parkSlot;
ParkingLot[1][parkSlot - 1].setPark(pID, false, StudDesc);
System.out.println("Thanks");
menu();
} else {
System.out.println("Sorry");
menu();
}
} else if (parkLevel == 3) {
ParkingLot[2][parkSlot - 1] = new ParkingDescription();
if (ParkingLot[2][parkSlot - 1].getAvailable() == true) {
System.out.println("Please Enter tp: ");
int tp = input.nextInt();
System.out.println("Please Enter First Name: ");
String ft = input.next();
System.out.println("Please Enter Last Name: ");
String lt = input.next();
System.out.println("Please Enter Contact Number: ");
int cn = input.nextInt();
System.out.println("Please Enter Email Address: ");
String ea = input.next();
System.out.println("Please Enter Car Number: ");
String cnb = input.next();
System.out.println("Please Enter Date Registered : ");
int date = input.nextInt();
StudDesc.setStudDesc(tp, ft, lt, cn, ea, cnb, date);
int pID = (parkLevel * 1000) + parkSlot;
ParkingLot[2][parkSlot - 1].setPark(pID, false, StudDesc);
System.out.println("Thanks");
menu();
} else {
System.out.println("Sorry");
menu();
}
}
}
public void UpdatePark() {
System.out.println();
System.out.println(" **Parking Lot** ");
System.out.println(" ________________________________________________________________________________");
for (i = 0; i < 3; i++) {
for (j = 0; j < 15; j++) {
ParkingLot[i][j] = new ParkingDescription();
System.out.print(" * " + ParkingLot[i][j].getStatus());
}
System.out.println();
System.out.println(" ********************************************************************************");
}
System.out.println("Please insert number 1-3 to choose the parking level");
parkLevel = input.nextInt();
System.out.println("Please insert number 1-15 to choose the parking slot");
parkSlot = input.nextInt();
//check available
if (parkLevel == 1) {
ParkingLot[0][parkSlot - 1] = new ParkingDescription();
if (ParkingLot[0][parkSlot - 1].getAvailable() == false) {
ParkingLot[0][parkSlot - 1].showDetails();
menu();
} else {
System.out.println("Sorry");
menu();
}
} else if (parkLevel == 2) {
ParkingLot[1][parkSlot - 1] = new ParkingDescription();
if (ParkingLot[1][parkSlot - 1].getAvailable() == true) {
ParkingLot[1][parkSlot - 1].showDetails();
menu();
} else {
System.out.println("Sorry");
menu();
}
} else if (parkLevel == 3) {
ParkingLot[2][parkSlot - 1] = new ParkingDescription();
if (ParkingLot[2][parkSlot - 1].getAvailable() == true) {
ParkingLot[2][parkSlot - 1].showDetails();
menu();
} else {
System.out.println("Sorry");
menu();
}
}
}
}
//Class parking description
public class ParkingDescription {
public static int StudID, ParkSpaceID, DReg;
public static String Status, CNum;
public static Boolean Available = true;
public ParkingDescription() {
// TODO: Add your code here
}
public void setPark(int parkSpaceID, Boolean available, StudentDescription StDe)
{
this.StudID = StDe.getStudentID();
this.CNum = StDe.getCarNumber();
this.DReg = StDe.getDateReg();
this.ParkSpaceID = parkSpaceID;
this.Available = available;
}
public Boolean getAvailable()
{
return Available;
}
public String getStatus()
{
if(Available == false){
return "1";
} else {
return "0";
}
}
public void showDetails()
{
//generate report
System.out.println("Student ID : TP"+StudID);
System.out.println();
System.out.println("Car Number : "+CNum);
System.out.println();
System.out.println("Parking Space : L"+ParkSpaceID);
System.out.println();
System.out.println("Date Register : "+DReg);
}
}
//Student class
public class StudentDescription {
public int StudentID, CNumber, DateReg;
public String FName, LName, EMail, CarNum;
public StudentDescription() {
// TODO: Add your code here
}
public void setStudDesc(int studentID, String fName, String lName, int cNumber, String eMail, String carNum, int dateReg)
{
this.StudentID = studentID;
this.FName = fName;
this.LName = lName;
this.CNumber = cNumber;
this.EMail = eMail;
this.CarNum = carNum;
this.DateReg = dateReg;
}
public int getStudentID()
{
return this.StudentID;
}
public String getCarNumber()
{
return this.CarNum;
}
public int getDateReg()
{
return this.DateReg;
}
}
我有这个问题。当我要将一个停车详细信息对象设置为ParkingLot数组时,该数组将在所有数组上插入相同的数据信息。输出假定是这样的:
**Parking Lot**
* 1 * 0 * 0 * 0 * 0 * 0 * 0 * 0 * 0 * 0 * 0 * 0 * 0 * 0 * 0
* 0 * 0 * 0 * 0 * 0 * 0 * 0 * 0 * 0 * 0 * 0 * 0 * 0 * 0 * 0
* 0 * 0 * 0 * 0 * 0 * 0 * 0 * 0 * 0 * 0 * 0 * 0 * 0 * 0 * 0
但是我将所有输出都设置为1。那么如何解决这个问题呢?谢谢..
最佳答案
还有许多代码尚未显示,例如ParkingDescription
类的代码。但是根据您显示的内容...
在打印出所有状态的代码块中(出于某种原因,您已经进行了两次编码-一次在Reg
中,一次在UpdatePark
中),您要在数组中填充45个新的ParkingDescription
对象,并打印每个状态。也就是说,您将丢弃以前拥有的所有ParkingDescription
对象,而仅打印全新的对象。您真的不想这样做,因为ParkingDescription
对象存储了用户输入的所有数据。
我猜您会得到全1,因为1是新ParkingDescription
的状态。
更新
现在,您已经显示了ParkingDescription
类,我看到的问题是,您已将其字段声明为static
。这意味着每个字段只有一个副本,在此类的所有实例之间共享。从字段声明中删除单词static
,该问题应得到解决。
下次您在Stack Overflow上发布问题时,强烈建议您在首次发布问题时发布所有代码。不要仅仅发布您认为错误所在的部分,因为如果您错了,则会浪费每个人的时间。