2014-10-06 3 views
-1

Мне нужно прочитать строки текста из файла, который я запросил у пользователя. Моя программа Java должна читать первую строку этого файла и проверять, отображается ли последнее слово этой строки где-либо во второй строке. без использования повторения, массивов или класса конструкции я пришел с этим до сих пор:Сравнение строк текста на основе слов внутри строк Java

Scanner keyboard = new Scanner(System.in); 

    System.out.println("Enter filename: "); 

    File userFile = new File(keyboard.nextLine()); 

    keyboard.close(); 

    Scanner input = new Scanner(userFile); 

    String firstLine = input.nextLine(); 
    String secondLine = input.nextLine(); 

После здесь я пробовал много методов Струнных но ничего не дает мне обратно удовлетворительный результат. Я знаю, что мне нужно будет закончить мою программу с помощью выражения if и else о том, содержит ли вторая строка последнее слово в первой строке.

** У вас возникли проблемы с поиском способа сравнения подстрок (слов в строке текста), которые я фактически не знаю о местонахождении или о том, что такое символы. Это связано с тем, что все входные данные создаются пользователем. Есть ли способ сравнить подстроки, сохраняя фактические символы и не преобразовывая их в ints?

** UPDATE Я являюсь восторженным это, как я решил эту проблему расстраивает:

клавиатуры Сканер = новый сканер (System.in);

System.out.println("Enter filename: "); 

    File userFile = new File(keyboard.nextLine()); 

    keyboard.close(); 

    Scanner input = new Scanner(userFile); 

    String firstLine = input.nextLine(); 
    String secondLine = input.nextLine(); 

    int lastWordIndex; 

    lastWordIndex = ((firstLine.lastIndexOf(" ")) + 1); 

    String lastWord = firstLine.substring(lastWordIndex); 

    if (secondLine.contains(lastWord)) 
     System.out.println("It is true the word " + lastWord 
       + " appears in the text: " + secondLine); 
    else 
     System.out.println("The word: " + lastWord 
       + " does not appear in the text: " + secondLine); 
+1

Вы пробовали ['String.split'] (http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#split (java.lang.String)) и [ 'String.contains'] (http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#contains (java.lang.CharSequence))? – Krease

+0

Да, но проблема здесь в том, что я не знаю, что содержат строки. Я просто знаю, что мне нужно выяснить, будет ли это последнее слово (которое ограничено пробелом и может быть технически буквенно-цифровым с шапками) первой строки появляется где угодно во второй строке. Образцов вход: компьютерного программирования является h4Rd экономича также очень h4Rd выхода: Это правда, что слово HARD появляется в тексте: экономич также очень h4Rd – ryan

+0

снова вы можете разместить свой контент файл? ваш вход и ожидаемый результат? поэтому мы можем воспроизвести ваш код и помочь вам лучше. вы можете объяснить: «Мне нужно прочитать строки текста из файла, который я запросил у пользователя».? –

ответ

0

Есть несколько способов сделать это, но вы должны получить последнее слово в FirstLine строки, а затем сравнить его со строкой второй линии.

Вы можете использовать метод substring() в своей строке, а затем использовать метод lastIndexOf() с аргументом "" (то есть пробел). Если вы добавите его к этому, у вас будет индекс первой буквы последнего слова в вашей строке.

+0

как сказал op, он или она знают об этом, но кажется, что у op есть еще одна проблема :) –

+0

спасибо за вашу помощь всем! – ryan

0

Это, как я хотел бы сделать это:

String lastWord = firstLine.replaceAll(".*\\s+", ""); 
boolean secondLineHasLastWord = secondLine.contains(lastWord); 

или, рядный это:

if (secondLine.contains(firstLine.replaceAll(".*\\s+", ""))) { 
    // yes 
} else { 
    // no 
} 

Извлечение последнего слова осуществляется с помощью регулярных выражений, который соответствует всем, вплоть до последний символ пробела и заменяет совпадение ничем (фактически удаляя его).

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