Я работаю над программой USB Scale, которая считывает значения из внешней весовой шкалы и записывает их в командную строку, когда взвешенный объект помещается в нее в бесконечном цикле.Однако я пытаюсь включить оператор else if, который, когда значение равно двойному значению «Дюжина яиц» взвешенного объекта, запрашивает базу данных и вставляет значения и атрибуты в таблицу.Кажется, что целое число не сравнивается с двойным значением и пропускает оператор if, и поэтому мне было интересно, как я смогу сделать оператор else if распознаваемым и записать его в базу данных в режиме реального времени одновременно сзначения записываются в командную строку?
Я проверил соединение с базой данных в отдельном классе, и он отлично фиксирует атрибуты, поэтому соединение не является проблемой.
@Override
public void dataEventOccurred(UsbPipeDataEvent upde) {
boolean empty = data[1] == 2;
boolean overweight = data[1] == 6;
boolean negative = data[1] == 5;
boolean grams = data[2] == 2;
int scalingFactor = data[3];
double DozenEggs = 144.0;
double OneEgg = 0.2;
int AverageSellingUnitWeight = (data[4] & 0xFF) + (data[5] << 8);
if (empty) {
System.out.println("EMPTY");
} else if (overweight) {
System.out.println("OVERWEIGHT");
} else if (negative) {
System.out.println("NEGATIVE");
} else if (AverageSellingUnitWeight == DozenEggs) {
// then we have a dozen eggs in the fridge.
// add 6 eggs to Fridge table in the database.
try {
// create a mysql database connection
String myDriver = "com.mysql.cj.jdbc.Driver";
String myUrl = "jdbc:mysql://localhost:3306/smartfridge?autoReconnect=true&useSSL=false;";
Class.forName(myDriver);
Connection conn = DriverManager.getConnection(myUrl, "root", "admin");
// the mysql insert statement
String query = " insert into fridge (name, UnitOfSale, ContentsQuantity, department, AverageSellingUnitWeight)"
+ " values (?, ?, ?, ?, ?)";
// create the mysql insert preparedstatement
PreparedStatement preparedStmt = conn.prepareStatement(query);
preparedStmt.setString(1, "Eggs");
preparedStmt.setInt(2, 1);
preparedStmt.setInt(3, 6);
preparedStmt.setString(4, "Milk, Butter & Eggs");
preparedStmt.setDouble(5, DozenEggs);
// execute the preparedstatement
preparedStmt.execute();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
// ...
}