2015-09-23 8 views
0

Назначение задает три строки алфавитного ввода (то есть буквы и цифры), затем сравнивает лексикографически и рисует средний.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; 
    } 
+0

Просьба указать примерные входы и ожидаемые и фактические выходы. –

+0

Есть ли веская причина (например, ограничения в присваивании) не просто написать элементы в массив, отсортировать массив, а затем выбрать средний элемент? –

+0

В принципе, назначение должно использовать if/else/elseif и логику для использования кода, который мы уже знаем. Слишком далеко «за пределами» то, что строго в задании, не поощряется. Пример ввода будет чем-то вроде «abcd» «Glad» «zulu» (в определенном порядке); нормальными порядковыми системами, порядок будет Glad, abcd, zulu. Я (предполагаю), что фактический ожидаемый порядок должен быть «abcd, Glad, zulu» и вернуть программу «Glad». У меня было это (точно так, я был довольно уверен), а затем попытался добавить бит «IgnoreCase» ко всем «.compareTo», но решил внезапно ничего не вернуть. – Wraith11B

ответ

0

Ваши данные сравнения строк неверны - вам необходимо их проверить и переписать. Вот еще один способ сделать это:

import java.util.Scanner; 

public class FindMiddleWord 
{ 
public static void main(String[] args) 
{ 

    String[] wordArray = new String[3]; 

    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(); 
    wordArray[0] = firstWord; 

    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(); 
    wordArray[1] = secondWord; 

    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(); 
    wordArray[2] = thirdWord; 

    String temp; 
    int i,j = 0; 
    for (i = 0; i < wordArray.length; i++) { 
     for (j = 0; j < wordArray.length; j++) { 
      if (wordArray[i].compareToIgnoreCase(wordArray[j]) < 0) { 
       temp = wordArray[i]; 
       wordArray[i] = wordArray[j]; 
       wordArray[j] = temp; 
      } 
     } 
    }  
    System.out.println("The Middle Word is : "+wordArray[1]);  
    } 
} 
+0

Я хотел бы использовать функцию массива, но, к сожалению, она не входит в сферу назначения задания. Как неверно эти утверждения сравнения? Не могли бы вы указать, где я совершил ошибку? – Wraith11B

 Смежные вопросы

  • Нет связанных вопросов^_^