Итак, я пытаюсь написать код, чтобы найти среднюю строку набора заданных строк, в данном случае 3. Под серединой я подразумеваю любое среднее в лексикографическом порядке.Код, который я написал, компилируется и работает без проблем, но с некоторыми комбинациями строк он не хочет работать должным образом.Я провел несколько тестов, и я написал в комментариях ниже, какие комбинации строк дали мне ошибку.Числа по тестам - это фактический порядок строк.Мне сказали, что некоторые комбинации не удовлетворяют всем логическим утверждениям, но я действительно не понимаю, как.Я знаю, что это простое решение, но любая помощь будет признательна.
import java.util.Scanner;
public class MiddleString {
public static void main(String[] args) {
Scanner in = new Scanner (System.in);
System.out.println("Please enter the first string to compare");
String str1 = in.nextLine();
System.out.println ("Now enter the second string");
String str2 = in.nextLine();
System.out.println ("Good! And finally, the third");
String str3 = in.nextLine();
if ((str1.compareTo(str3) < 0) && (str1.compareTo(str2) < 0) && (str2.compareTo(str3) < 0))
System.out.println("In lexicographic order, the string in the middle will be " + str2);
else if ((str3.compareTo(str1) < 0) && (str1.compareTo(str2) < 0) && (str3.compareTo(str2) < 0))
System.out.println("In lexicographic order, the string in the middle will be " + str1);
else if ((str1.compareTo(str2) < 0) && (str3.compareTo(str2) < 0) && (str1.compareTo(str3) < 0))
System.out.println("In lexicographic order, the string in the middle will be " + str3);
}
}
// TESTS
// str1|str2|str3|result
// A | B | C |pass 123
// B | C | A |pass 231
// M | A | Z |FAIL 213
// A | Z | M |pass 132
// Z | M | A |FAIL 321
// Z | A | M |FAIL 312
//