【发布时间】:2020-05-30 06:07:24
【问题描述】:
我正在从 Scala 中的文本文件中读取文本。我在使用 if 语句时遇到了困难。
for (line <- Source.fromFile(filename).getLines) {
if (line.length>7) {
println("b1 >" + line(7)+ "< " + line(0).getType)
if(line(7)=="#") {
println("hashtag")
}
}
}
下面是我的文本文件中的 2 行。第一行有 4 个空格,后跟许多主题标签。第二行是 4 个空格,后跟 1 个标签(4 个空格不断被堆栈溢出删除)
##################################################################################################################################################
#
下面是我收到的输出
//| b1 >#< 12
//| b1 > < 12
问题 1) 为什么getType 返回 12?这是我听过的最奇怪的数据类型。
问题 2)(可能由 Q1 回答)为什么 if(line(7)=="#") 语句永远不会返回 true?
【问题讨论】:
-
您不使用
==来比较字符串。使用.equals方法。 -
@SarveshKumarSingh 在 Scala 中你可以(它调用
equals)。 -
@SarveshKumarSingh 这在 Scala 中是不正确的,但在该死的 Java 中是不正确的。 - Scalaflow,你能格式化和缩进你的代码以便它可读吗?无论如何,我认为问题在于
line(7)重新运行Char而不是String。使用line(7) == '7' -
@AlexeyRomanov 是的。但是
==允许nulls在没有通知的情况下通过,这在大多数情况下是不希望的(只是我个人的经验)。对我来说,这已成为许多失败者学到的硬性规则。我认为这在 Scala 开发人员中更常见。
标签: scala if-statement types