从文本文档扫描

时间:2016-01-03 19:35:02

标签: java

所以我从在线课程中分配了一个可以扫描大量文档的程序。本文档包含数百对包含GB GG BB BG的字母,每组两个字母都有自己的行。我要做的是弄清楚有多少行,然后弄清楚有多少不同的两个字母组。我尝试过代码,但目前我被卡住了。我编译的代码但是当我在BlueJ中运行它时,输出窗口甚至没有弹出。这就是我到目前为止所做的:

func test(someEnum: EnumType) {
    switch someEnum {
    case .A:
        someMethodSpecificToA()
        fallthrough
    case .B, .C, .D:
        someMethodSpecificToTheseThreeLetters()
        fallthrough
    case .E:
        someMethodSpecificToE()
        fallthrough
    case .A, .E:
        aMethodIShouldCallOnVowels()
    case .B, .C, .D:
        aMethodIShouldCallOnAllConsonants()
    }
}

我已经尝试了几个小时,但我似乎无法让它发挥作用。我甚至无法计算出有多少行。任何帮助将非常感谢!谢谢!

4 个答案:

答案 0 :(得分:2)

你永远不会阅读下一行,所以你陷入无限循环

答案 1 :(得分:0)

我建议您查看此案例的Files.readAllLines函数。 它加载List中的所有行,您可以轻松地迭代并执行所需的操作。

示例:Files.readAllLines(Paths.get("C:\\Users\\TEM\\Desktop\\Projects\\Family\\Document\\test1.txt", Charsets.default())将加载您需要的内容

答案 2 :(得分:0)

你的while循环是如上所述的inifinite,因为inFile.hasNextLine()是一个返回true或false的布尔语句,但它不会使扫描器前进到下一行,你需要添加到每个if语句a:< / p>

inFile.nextLine() //advance the inputstream

答案 3 :(得分:0)

跳过其他人指出的“no readNextLine”问题,你的基本技术很糟糕。

使用Map&lt; String,Integer&gt;。 将字符对存储为键。 每次你读一对新的, 尝试从地图中检索它。 如果你得到null,那么这对没有一个计数器, 所以存储1作为值。 如果获得非空值,请添加1并存储新计数。

完成阅读后, 你有一个字符对的映射到遇到的次数。