小编典典

如何确定扫描仪的行尾?

java

我的程序中有一个扫描仪,可以读取文件的一部分并将其格式化为HTML。当我读取文件时,我需要知道如何使扫描仪知道它在一行的末尾,然后开始写入下一行。

这是代码的相关部分,让我知道是否遗漏了什么:

//scanner object to read the input file
Scanner sc = new Scanner(file);

//filewriter object for writing to the output file
FileWriter fWrite = new FileWriter(outFile);

//Reads in the input file 1 word at a time and decides how to
////add it to the output file
while (sc.hasNext() == true)
{
    String tempString = sc.next();
    if (colorMap.containsKey(tempString) == true)
    {
        String word = tempString;
        String color = colorMap.get(word);
        String codeOut = colorize(word, color);
        fWrite.write(codeOut + " ");
    }
    else
    {
        fWrite.write(tempString + " ");
    }
}

//closes the files
reader.close();
fWrite.close();
sc.close();

我发现了有关sc.nextLine(),但是我仍然不知道如何确定何时到达终点。


阅读 216

收藏
2020-11-19

共1个答案

小编典典

如果只想使用Scanner,则需要创建一个临时字符串,将其实例化到数据网格的nextLine()(因此它仅返回跳过的行),并创建一个新的Scanner对象来扫描该临时字符串。这样,您只使用该行,并且hasNext()不会返回假阳性(这并不是真正的假阳性,因为那是要这样做的,但从您的情况来看,应该是这样)。您只需保持nextLine()设置第一个扫描仪并更改临时字符串,然后更改第二个扫描仪以扫描每个新行等。

2020-11-19