所以我从在线课程中分配了一个可以扫描大量文档的程序。本文档包含数百对包含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()
}
}
我已经尝试了几个小时,但我似乎无法让它发挥作用。我甚至无法计算出有多少行。任何帮助将非常感谢!谢谢!
答案 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并存储新计数。
完成阅读后, 你有一个字符对的映射到遇到的次数。