Hallo Ich versuche, Versionsnummern von Telefongeräten zu vergleichen. Mein Programm stürzt ab, wenn eine Version als 4.3.2 kommt, also habe ich das Dezimalformat implementiert, aber jetzt wird nur noch meine Nummer von 4.3.2 auf 4.3 gerundet, aber das Programm wird mit einer Versionsnummer von zB 4.2 völlig in Ordnung sein . Wie kann ich meinen Vergleicher reparieren, um 3 Dezimalstellen aufzunehmen und nicht zu stürzen, während ich noch für 2 Dezimalstellen arbeite?Version Komparator 3 Dezimalstellen
@Override
public int compare(InventoryCardViewModel lhs, InventoryCardViewModel rhs) {
Phone lhp = phoneDataSource.getPhoneByDeviceID(lhs.getPhoneDeviceID.getValue());
Phone rhp = phoneDataSource.getPhoneByDeviceID(rhs.getPhoneDeviceID.getValue());
if(!lhp.versionNumber.equals(rhp.versionNumber)) {
DecimalFormat df = new DecimalFormat("#.#.#", new DecimalFormatSymbols(new Locale("en_US")));
try {
lhp.versionNumber = String.valueOf(df.parse(lhp.versionNumber).doubleValue());
rhp.versionNumber = String.valueOf(df.parse(lhp.versionNumber).doubleValue());
} catch (ParseException e) {
e.printStackTrace();
}
if (Double.valueOf(lhp.versionNumber) > Double.valueOf(rhp.versionNumber)) {
return -1;
} else {
return 1;
}
Verwenden Sie kein 'DecimalFormat'; Ich würde wahrscheinlich auf '' \\. '' Teilen und die resultierenden Token vergleichen. –