Java 逐行而不是逐字读取文件
我试图编写一些代码来扫描输入文件中的回文,但它从每个单词而不是每行中获取字符串。例如,racecar将显示为racecar=回文或太热而不能hoot=回文,但它将变为太热=不是回文,热=不是回文等 下面是我当前读取文件的步骤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()) {
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);
}