Назначение задает три строки алфавитного ввода (то есть буквы и цифры), затем сравнивает лексикографически и рисует средний.Java Отображение вывода сравнения строк
Я нашел здесь подобную проблему (Java: Three strings, lexicographic order), но не может комментировать, чтобы добавить свой вопрос. Я отсортировал (на мгновение), как правильно вернуть результат, но теперь код не дает никакого вывода, и я не знаю, что я сделал неправильно.
public static void main(String[] args)
{
printHeading();
String topString;
String middleString;
String bottomString;
Scanner in;
in = new Scanner(System.in);
System.out.println("Please enter a first word:");
while (!in.hasNext("[A-Za-z]+"))
{
System.out.println("Please use only alphabetic values.");
System.out.println("Please enter a first word:");
in.nextLine(); // Captures the first word
}
String firstWord = in.nextLine();
System.out.println("Please enter a second word:");
while (!in.hasNext("[A-Za-z]+"))
{
System.out.println("Please use only alphabetic values.");
System.out.println("Please enter a second word:");
in.nextLine(); // Captures the second word
}
String secondWord = in.nextLine();
System.out.println("Please enter a third word:");
while (!in.hasNext("[A-Za-z]+"))
{
System.out.println("Please use only alphabetic values.");
System.out.println("Please enter a third word:");
in.nextLine(); // Captures the third word
}
String thirdWord = in.nextLine();
if (firstWord.equalsIgnoreCase(secondWord) && secondWord.equalsIgnoreCase(thirdWord))
{
System.out.println();
System.out.println("The words are the same! Please try again.");
}
if (firstWord.compareTo(secondWord) > 0 && firstWord.compareTo(thirdWord) > 0)
{
topString = firstWord;
}
else if (firstWord.compareTo(secondWord) < 0 && firstWord.compareTo(thirdWord) > 0)
{
middleString = firstWord;
System.out.println();
System.out.println("The second word in lexicographic order is: " + middleString);
}
else
{
bottomString = firstWord;
}
if (secondWord.compareTo(firstWord) > 0 && secondWord.compareTo(thirdWord) > 0)
{
topString = secondWord;
}
else if (secondWord.compareTo(firstWord) < 0 && secondWord.compareTo(thirdWord) > 0)
{
middleString = secondWord;
System.out.println();
System.out.println("The second word in lexicographic order is: " + middleString);
}
else
{
bottomString = secondWord;
}
if (thirdWord.compareTo(secondWord) > 0 && thirdWord.compareTo(firstWord) > 0)
{
topString = thirdWord;
}
else if (thirdWord.compareTo(secondWord) < 0 && thirdWord.compareTo(firstWord) > 0)
{
middleString = thirdWord;
System.out.println();
System.out.println("The second word in lexicographic order is: " + middleString);
}
else
{
bottomString = thirdWord;
}
Просьба указать примерные входы и ожидаемые и фактические выходы. –
Есть ли веская причина (например, ограничения в присваивании) не просто написать элементы в массив, отсортировать массив, а затем выбрать средний элемент? –
В принципе, назначение должно использовать if/else/elseif и логику для использования кода, который мы уже знаем. Слишком далеко «за пределами» то, что строго в задании, не поощряется. Пример ввода будет чем-то вроде «abcd» «Glad» «zulu» (в определенном порядке); нормальными порядковыми системами, порядок будет Glad, abcd, zulu. Я (предполагаю), что фактический ожидаемый порядок должен быть «abcd, Glad, zulu» и вернуть программу «Glad». У меня было это (точно так, я был довольно уверен), а затем попытался добавить бит «IgnoreCase» ко всем «.compareTo», но решил внезапно ничего не вернуть. – Wraith11B