Я пишу функцию, которая получает 2 строки. каждая строка представляет собой версию чего-либо.
Например:
Строка var1 = "1.1.1";
Строка var2 = "1.1.2";
И возвращает, какая строка является более новой версией.
Мой код:
public void main(String var1, String var2) {
String[] arrayA = var1.split("\\.");
String[] arrayB = var2.split("\\.");
for (int i = 0; i < arrayA.length; i++) {
Integer number1 = Integer.parseInt(arrayA[i]);
Integer number2 = Integer.parseInt(arrayB[i]);
if (number1.equals(number2)) {
textView.setText("arrays equal");
} else if (number1 > number2) {
textView.setText("array A newer version");
break;
} else if (number2 > number1) {
textView.setText("array B newer version");
break;
}
}
До сих пор все работает нормально.
Моя проблема начинается, когда массивы имеют разную длину
(Я всегда выбираю shorterArray на longArray)
Если я кемпер var1 = "2.3"; to var2 = "3.3.3"; я получаю правильный ответ.
Но если я кемпер var1 = "2.3"; to var2 = "2.3.1";
Я всегда получаю «равный».
Есть предложения, как с этим бороться?
3 ответа
Пожалуйста, попробуйте следующее:
public void main(String var1, String var2) {
String[] arrayA = var1.split("\\.");
String[] arrayB = var2.split("\\.");
int length = 0;
if (arrayA.length > arrayB.length) {
length = arrayA.length;
} else {
length = arrayB.length;
}
int check = 0;
for (int i = 0; i < length; i++) {
Integer number1 = 0, number2 = 0;
if (arrayA.length > i) {
number1 = Integer.parseInt(arrayA[i]);
}
if (arrayB.length > i) {
number2 = Integer.parseInt(arrayB[i]);
}
if (number1.equals(number2)) {
check = 0;
} else if (number1 > number2) {
check = 1;
break;
} else if (number2 > number1) {
check = 2;
break;
}
}
switch (check) {
case 0:
System.out.println("arrays equal");
break;
case 1:
System.out.println("array A newer version");
break;
case 2:
System.out.println("array B newer version");
break;
}
}
Вы можете добавить свои вары в список и просто использовать метод сортировки из java.util.Collections, который будет выполнять сравнение за вас. пример
public static void main(String var1, String var2){
List<String> varList = new ArrayList<String>();
varList.add(var1);
varList.add(var2);
java.util.Collections.sort(varList);
System.out.println("designation of newer version is: " + varList.get(1));
}
int length = Math.min(arrayA.length, arrayB.length);
for (int i = 0; i < length; i++) {
Похожие вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.