Чтение Файла за строкой вместо слова за словом

Я пытаюсь написать некоторый код, который сканирует палиндромы во входном файле, но он получает строки из каждого слова вместо каждой строки. Примером может быть гоночный автомобиль, который будет отображаться как гоночный автомобиль = палиндром или слишком горячий, чтобы кричать = палиндром, но вместо этого он пойдет слишком = не палиндром, горячий = не палиндром и т. Д.

Вот что я сейчас делаю, чтобы прочитать файл

File inputFile = new File( "c:/temp/palindromes.txt" );
Scanner inputScanner = new Scanner( inputFile );
while (inputScanner.hasNext())
{
    dirtyString = inputScanner.next();

    String cleanString = dirtyString.replaceAll("[^a-zA-Z]+", "");

    int length  = cleanString.length();
    int i, begin, end, middle;

    begin  = 0;
    end    = length - 1;
    middle = (begin + end)/2;

    for (i = begin; i <= middle; i++) {
        if (cleanString.charAt(begin) == cleanString.charAt(end)) {
            begin++;
            end--;
        }
        else {
            break;
        }
    }
}
4 голоса | спросил user3055640 2 MonEurope/Moscow2013-12-02T04:06:23+04:00Europe/Moscow12bEurope/MoscowMon, 02 Dec 2013 04:06:23 +0400 2013, 04:06:23

3 ответа


0

Вам необходимо внести следующие изменения

изменить

while (inputScanner.hasNext()) // This will check the next token.

and 

dirtyString  = inputScanner.next(); // This will read the next token value.

к

while (inputScanner.hasNextLine()) // This will check the next line.

and dirtyString = inputScanner.nextLine(); // This will read the next line value.

inputScanner.next () будет читать следующий токен

inputScanner.nextLine () будет читать одну строку.

ответил Prabhakaran 2 MonEurope/Moscow2013-12-02T04:09:59+04:00Europe/Moscow12bEurope/MoscowMon, 02 Dec 2013 04:09:59 +0400 2013, 04:09:59
0

Чтобы прочитать строку из файла, вам следует использовать метод nextLine (), а не метод next ().

Разница между ними

  

nextLine () - продвигает этот сканер за текущую строку и возвращает пропущенный ввод.

Пока

  

next () . Находит и возвращает следующий полный токен с этого сканера.

Поэтому вам придется изменить инструкцию while, включив в нее nextLine () , чтобы она выглядела следующим образом.

while (inputScanner.hasNextLine()) and dirtyString = inputScanner.nextLine();
ответил user2612619 2 MonEurope/Moscow2013-12-02T04:16:24+04:00Europe/Moscow12bEurope/MoscowMon, 02 Dec 2013 04:16:24 +0400 2013, 04:16:24
0
FileReader f = new FileReader(file);
BufferedReader bufferReader = new BufferedReader(f);
String line;
//Read file line by line and print on the console
while ((line = bufferReader.readLine()) != null)   {
        System.out.println(line);
}

Приведенный выше фрагмент кода считывает ввод из файла построчно, если неясно, пожалуйста, посмотрите это для полного кода программы

ответил cruze 15 J0000006Europe/Moscow 2014, 20:53:09

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132