java - 获取 Int 的存储值并在不同的类中使用它
问题描述
我是 Java 编程新手,目前正在制作迷你停车系统。
我正在尝试获取(carSlotLeft, motorSlotLeft, vanSlotLeft) - 包含当前剩余插槽的变量。我将这些变量用于“SQLConnections”类,然后在不同的“Park”类上使用它
我所做的是合并了我需要的 SQL 结果,因为我会将结果用于不同的类和方法 - 以使事情井井有条。但我无法通过结果。
对于“SQL Connections”类,我还将在不同的方法上使用变量,但是当我尝试调用(carSlotLeft, motorSlotLeft, vanSlotLeft)时,它无法获得关于 vehicleALLReport()的确切计算
这是代码。
public class SQLConnections {
public Connection con = null;
//Count of Parked in Vehicles
public int countCar;
public int countMotor;
public int countVan;
//Default Parking Slot Count
public int cDefaultSpace = 10;
public int mDefaultSpace = 5;
public int vDefaultSpace = 5;
//Count for Parking Slot Left per Vehicle Type
public int carSlotLeft;
public int motorSlotLeft;
public int vanSlotLeft;
//Park Vehicle Report Choice
public int pVReport;
Scanner input = new Scanner(System.in);
public void parkStatus() {
con = dbConnect.con();
String qCar = "SELECT COUNT(*) FROM `vehicle` WHERE `vType` = 1 AND `parkout` IS NULL";
String qMotor = "SELECT COUNT(*) FROM `vehicle` WHERE `vType` = 2 AND `parkout` IS NULL";
String qVan = "SELECT COUNT(*) FROM `vehicle` WHERE `vType` = 3 AND `parkout` IS NULL";
try {
Statement stmtCar = con.createStatement();
Statement stmtMotor = con.createStatement();
Statement stmtVan = con.createStatement();
ResultSet rsCar = stmtCar.executeQuery(qCar);
ResultSet rsMotor = stmtMotor.executeQuery(qMotor);
ResultSet rsVan = stmtVan.executeQuery(qVan);
rsCar.next();
rsMotor.next();
rsVan.next();
countCar = rsCar.getInt(1);
countMotor = rsMotor.getInt(1);
countVan = rsVan.getInt(1);
carSlotLeft = cDefaultSpace - countCar;
motorSlotLeft = mDefaultSpace - countMotor;
vanSlotLeft = vDefaultSpace - countVan;
System.out.println("Current Parking Slot Status");
System.out.printf("%-20s %-20s %-20s \n", "Vehicle Type", "Available Slot Left", "Parking Limit");
System.out.printf("%-20s %-20s %-20s \n", "Car", carSlotLeft, cDefaultSpace);
System.out.printf("%-20s %-20s %-20s \n", "Motorcycle", motorSlotLeft, mDefaultSpace);
System.out.printf("%-20s %-20s %-20s \n", "Van", vanSlotLeft, vDefaultSpace);
System.out.printf("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
} catch (SQLException e) {
e.printStackTrace();
}
}
public void vehicleALLReport(){
int slotAvaiblable = carSlotLeft + motorSlotLeft + vanSlotLeft
System.out.printf("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
System.out.printf("Available Slots Left -- ", slotAvaiblable);
}
至于“公园课” ——也是同样的事情。我也无法得到结果。这是代码
public class Park{
public Connection con = null;
Scanner input = new Scanner(System.in);
SQLConnections sqlConnections = new SQLConnections();
int carSlotLeft = sqlConnections.carSlotLeft;
int motorSlotLeft = sqlConnections.motorSlotLeft;
int vanSlotLeft = sqlConnections.vanSlotLeft;
public void limitCarPark(int vType) {
con = dbConnect.con();
if (carSlotLeft == 0){
System.out.println("No Parking Slot Available!!!\n\n\n");
} else {
Park p = new Park();
p.parkMethod(vType);
}
}
public void limitMotorPark(int vType) {
con = dbConnect.con();
if(motorSlotLeft == 0){
System.out.println("No Parking Slot Available!!!\n\n\n");
} else {
Park p = new Park();
p.parkMethod(vType);
}
}
public void limitVanPark(int vType) {
con = dbConnect.con();
if(vanSlotLeft == 0){
System.out.println("No Parking Slot Available!!!\n\n\n");
} else {
Park p = new Park();
p.parkMethod(vType);
}
}
我错过了什么吗?我做错了什么吗?请帮忙。非常感谢。
解决方案
我不知道你到底想要什么,但我已经修改了代码以使其工作:
import java.sql.*;
import java.util.Scanner;
class DbConnect {
protected String databaseUsername;
protected String databasePassword;
protected String databaseURL;
protected Connection databaseConnection;
protected String databaseDriverClassName = "com.mysql.cj.jdbc.Driver";
private static final DbConnect INSTANCE = new DbConnect();
private DbConnect() {
this.databaseUsername = "root";
this.databasePassword = "123456";
this.databaseURL = "jdbc:mysql://127.0.0.1/test?useUnicode=true&characterEncoding=utf8";
}
public static DbConnect getInstance() {
return INSTANCE;
}
public Connection con() {
if(databaseConnection == null) {
synchronized (this) {
if(databaseConnection == null) {
databaseConnection = connectToDatabase();
}
}
}
return databaseConnection;
}
protected Connection connectToDatabase() {
Connection connection = null;
try {
Class.forName(databaseDriverClassName);
connection = DriverManager.getConnection(databaseURL, databaseUsername, databasePassword);
} catch (Exception e) {
e.printStackTrace();
}
return connection;
}
}
class SQLConnections {
public Connection con = null;
//Count of Parked in Vehicles
public int countCar;
public int countMotor;
public int countVan;
//Default Parking Slot Count
public int cDefaultSpace = 10;
public int mDefaultSpace = 5;
public int vDefaultSpace = 5;
//Count for Parking Slot Left per Vehicle Type
public int carSlotLeft;
public int motorSlotLeft;
public int vanSlotLeft;
//Park Vehicle Report Choice
public int pVReport;
Scanner input = new Scanner(System.in);
public DbConnect dbConnect = DbConnect.getInstance();
public void parkStatus() {
con = dbConnect.con();
String qCar = "SELECT COUNT(*) FROM `vehicle` WHERE `vType` = 1 AND `parkout` IS NULL";
String qMotor = "SELECT COUNT(*) FROM `vehicle` WHERE `vType` = 2 AND `parkout` IS NULL";
String qVan = "SELECT COUNT(*) FROM `vehicle` WHERE `vType` = 3 AND `parkout` IS NULL";
try {
Statement stmtCar = con.createStatement();
Statement stmtMotor = con.createStatement();
Statement stmtVan = con.createStatement();
ResultSet rsCar = stmtCar.executeQuery(qCar);
ResultSet rsMotor = stmtMotor.executeQuery(qMotor);
ResultSet rsVan = stmtVan.executeQuery(qVan);
rsCar.next();
rsMotor.next();
rsVan.next();
countCar = rsCar.getInt(1);
countMotor = rsMotor.getInt(1);
countVan = rsVan.getInt(1);
carSlotLeft = cDefaultSpace - countCar;
motorSlotLeft = mDefaultSpace - countMotor;
vanSlotLeft = vDefaultSpace - countVan;
System.out.println("Current Parking Slot Status");
System.out.printf("%-20s %-20s %-20s \n", "Vehicle Type", "Available Slot Left", "Parking Limit");
System.out.printf("%-20s %-20s %-20s \n", "Car", carSlotLeft, cDefaultSpace);
System.out.printf("%-20s %-20s %-20s \n", "Motorcycle", motorSlotLeft, mDefaultSpace);
System.out.printf("%-20s %-20s %-20s \n", "Van", vanSlotLeft, vDefaultSpace);
System.out.printf("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
} catch (SQLException e) {
e.printStackTrace();
}
}
public void vehicleALLReport() {
int slotAvaiblable = carSlotLeft + motorSlotLeft + vanSlotLeft;
System.out.printf("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
System.out.printf("Available Slots Left -- %d", slotAvaiblable);
}
}
public class Park {
Scanner input = new Scanner(System.in);
SQLConnections sqlConnections = new SQLConnections();
int carSlotLeft = sqlConnections.carSlotLeft;
int motorSlotLeft = sqlConnections.motorSlotLeft;
int vanSlotLeft = sqlConnections.vanSlotLeft;
public DbConnect dbConnect = DbConnect.getInstance();
public void limitCarPark(int vType) {
sqlConnections.parkStatus();
carSlotLeft = sqlConnections.carSlotLeft;
if (carSlotLeft == 0) {
System.out.println("No Parking Slot Available!!!\n\n\n");
} else {
parkMethod(vType);
}
}
public void limitMotorPark(int vType) {
sqlConnections.parkStatus();
motorSlotLeft = sqlConnections.motorSlotLeft;
if (motorSlotLeft == 0) {
System.out.println("No Parking Slot Available!!!\n\n\n");
} else {
parkMethod(vType);
}
}
public void limitVanPark(int vType) {
sqlConnections.parkStatus();
vanSlotLeft = sqlConnections.vanSlotLeft;
if (vanSlotLeft == 0) {
System.out.println("No Parking Slot Available!!!\n\n\n");
} else {
parkMethod(vType);
}
}
public void parkMethod(int vType) {
sqlConnections.vehicleALLReport();
}
public static void main(String[] args) {
Park park = new Park();
park.limitCarPark(1);
park.limitMotorPark(1);
park.limitVanPark(1);
}
}
推荐阅读
- php - IIS上的PHP exec无法通过Web浏览器工作
- python - 如何在 tkinter python 的按钮小部件中使用 activeforeground 选项
- java - Servlet 在 NetBeans 中不起作用,我不明白为什么 - 初学者级别
- apache-spark - 具有不同架构的 Kafka Spark Streaming json 文件
- python - 在 Pandas 中应用 EWMA 滚动窗口函数但避免初始 NAN 值
- c++ - 8位数字129如何在c ++中以signed char形式存储为-127
- opencv - 图像处理 - 查找轮廓 EmguCv
- javafx - 使用灯光效果和透视相机时窗格被切断
- sql - 具有空字符串的 Sql,相同的资格,不同的结果
- react-native - React Native Workflow,处理 429 错误和数据