оператор if никогда не возвращает true в scala при сравнении строк - PullRequest
0 голосов
/ 14 февраля 2020

Я читаю текст из текстового файла в 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?

1 Ответ

4 голосов
/ 14 февраля 2020

Чтобы ответить на ваши вопросы в обратном порядке:

Вопрос 2. Поскольку line - это String, line(7) - это Char, которое никогда не равно String. Вместо этого вы хотите сравнить его с '#'.

Вопрос 1. Из-за вышеизложенного вызывается метод Char.getType, который

Возвращает значение, указывающее общую категорию персонажа.

(не то, чтобы его можно было найти в собственной документации Scala). Вы, вероятно, хотели вместо этого getClass.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...