Нахождение следующего вхождения символа ===> (найден юнит, требуется логическое значение, ошибка) - PullRequest
2 голосов
/ 13 апреля 2019

Я знаю, что этот вопрос задавался много раз, но я продолжаю получать: найдено Блок требует логической ошибки. Я пытался смотреть на различные решения и реализовывать их (в SO), но ни одно из них не работает.

Спасибо за помощь !! хх

P.S. Моя функция является частью более крупной программы, в которой общая идея состоит в том, что у нас есть буфер (который содержит данную строку), и мы находим вхождения символа внутри буфера. Что также необходимо, если мы находим вхождение, функция должна возвращать с каким номером (в данном случае курсором), в котором оно появилось, а также возвращать логическое выражение (true == найдено вхождение), иначе (false == не найдено вхождение) ).

class buffer(s:String){

private var buffer: StringBuilder = new StringBuilder(s) 
private var cursor: Int = 0

//function which checks the occurrence of a given string inside the "buffer"
def ff(c: Char): Boolean = {

    var  getWord = ""

    var Solution = 0

    //get String method is used to see if buffer is not empty
    if(getString != ""){

      for(x <- cursor until buffer.length by 1){
        if(buffer.charAt(x)==c)
        {
           Solution = x

          return   true;
        }   

         else
     return false }
    }
  }
}

1 Ответ

1 голос
/ 14 апреля 2019

Кажется, вы хотите немного больше, чем вы на самом деле просите. Но если вы просто хотите проверить, существует ли символ в строке, все, что вам нужно сделать, это:

s.exists(c == _)

Вот весь ваш пример:

val s = "asdfasdfERerfasdfasfasdfdsfdfa-asdfasdfafg"

def ff(c: Char): Boolean = s.exists(c == _)

println(ff('e')) // -> true
println(ff('x')) // -> false

Дайте мне знать, если это уже решит вашу проблему - или у вас есть дополнительные требования.

...