Нахождение "средней" строки - PullRequest
0 голосов
/ 05 июня 2018

Итак, я пытаюсь написать код, чтобы найти среднюю строку набора заданных строк, в данном случае 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
//

1 Ответ

0 голосов
/ 05 июня 2018
import java.util.Scanner;

public class MiddleString {

public static void main(String[] args) {

    Scanner in = new Scanner(System.in);
    String result = "";

    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(str2) < 0)) 
    {
        if ((str2.compareTo(str3) < 0)) 
        {
            result = str2;
        } else 
        {
            result = str3;
        }
    } else 
    {
        result = str1;
    }
    System.out.println("In lexicographic order, the string in the middle will be " + result);
}
}
...