Сопоставление строки в текстовом файле и возврат значения слова в клиентской части (Scala) - PullRequest
0 голосов
/ 21 октября 2018

Я хотел бы решить проблему, когда клиент отправляет слово на сервер, а сервер запускает текстовый файл и возвращает значение слова, набранного пользователем.Моя проблема в том, что когда набирается подходящее слово, я возвращаю значение слова совпадения, в то же время возвращаю обратно другое «Слово не найдено» (что является моим оператором управления).Поэтому я хотел бы просто вернуть значение слова, только если слово найдено и найдено

Вот мой код:

Серверная часть

Future {
  //store local socket references for processing
  val client = socket
  try {
    // Get a communication stream associated with the socket
    val is = new BufferedReader(new InputStreamReader(client.getInputStream))
    // Get a communication stream associated with the socket
    val os = new PrintStream(client.getOutputStream)
    val inFile = new File(filename)
    val readFile = new Scanner(inFile)
    var input : String = null;
    while (true) {
      // Read from input stream
      var line: String = is.readLine() // read the word from client
      println("The client send " + line)
      while (readFile.hasNext()) {
        input = readFile.nextLine()
        println("From the file " + input)
          if (input.contains(line)) {
            os.println(input)
            os.flush()
          }
          else{
            os.println("Word not found")
          }
    }
    }
  } catch {
    case e: Exception => e.printStackTrace
  } finally {
    // Close the connection, but not the server socket
    client.close()
  }
}

Клиентская часть

val is = new BufferedReader(new InputStreamReader(client.get.getInputStream))
val os = new PrintStream(client.get.getOutputStream) // write to server a strin

println("Please Input Ur word ")

val user = readLine
os.println(user)

while (true) {

  var line: String = is.readLine() //receive string from server
  println(line)
}

Мой текстовый файл отформатирован следующим образом:

супер-очень хорошо или приятно;отличный.

1 Ответ

0 голосов
/ 22 октября 2018

Используйте следующий подход:

  var found = false;
  while (readFile.hasNext() && !found) {
    input = readFile.nextLine()
    println("From the file " + input)
      if (input.contains(line)) {
        os.println(input)
        os.flush()
        found = true;
      }
  }

  if(!found) {
      os.println("Word not found")
      os.flush()
  }

Есть гораздо более красивые способы сделать это, но, как вы, кажется, новичок, это самое простое решение.

ЕслиВы заинтересованы в функциональном подходе, я с удовольствием помогу.

Надеюсь, это поможет.

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