Java 逐行而不是逐字读取文件

Java 逐行而不是逐字读取文件,java,file,input,line,Java,File,Input,Line,我试图编写一些代码来扫描输入文件中的回文,但它从每个单词而不是每行中获取字符串。例如,racecar将显示为racecar=回文或太热而不能hoot=回文,但它将变为太热=不是回文,热=不是回文等 下面是我当前读取文件的步骤 File inputFile = new File( "c:/temp/palindromes.txt" ); Scanner inputScanner = new Scanner( inputFile ); while (inputScanner.hasNext()) {

我试图编写一些代码来扫描输入文件中的回文,但它从每个单词而不是每行中获取字符串。例如,racecar将显示为racecar=回文或太热而不能hoot=回文,但它将变为太热=不是回文,热=不是回文等

下面是我当前读取文件的步骤

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;
        }
    }
}
File inputFile=新文件(“c:/temp/palindromes.txt”);
扫描仪inputScanner=新扫描仪(inputFile);
while(inputScanner.hasNext())
{
dirtyString=inputScanner.next();
字符串cleanString=dirtyString.replaceAll(“[^a-zA-Z]+”,”);
int length=cleanString.length();
int i,开始,结束,中间;
开始=0;
结束=长度-1;
中间=(开始+结束)/2;

对于(i=begin;i您需要进行以下更改

改变

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

and 

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

inputScanner.next()将读取下一个标记


inputScanner.nextLine()将读取一行。

要从文件中读取一行,应使用nextLine()方法,而不是next()方法

两者的区别在于

nextLine()-使此扫描仪前进到当前行,并返回跳过的输入

next()-查找并返回来自此扫描仪的下一个完整令牌

因此,您必须将while语句更改为包含nextLine(),使其看起来像这样

while (inputScanner.hasNextLine()) and dirtyString = inputScanner.nextLine();

上面的代码段逐行读取文件中的输入,如果不清楚,

您是否阅读了
Scanner
api?也许这种方法可以解决读取文件的问题?我肯定会使用一种方法,您应该始终格式化您的代码。我对其进行了编辑,由于代码不完整,我不得不假设您打算添加两个
}
。如果格式化代码,您将能够找到此类错误。
while (inputScanner.hasNextLine()) and dirtyString = inputScanner.nextLine();
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);
}