我想解决一个问题,即客户端将单词发送到服务器,而服务器将遍历文本文件并返回用户键入的单词的含义。我的问题是键入匹配词时,我将返回匹配词的含义,同时返回其他“未找到词”(这是我的控制声明)。因此,我只想在单词被找到并匹配后才返回单词的含义
这里是我的代码:
服务器部分
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)
}
我的文本文件是这样格式化的:
非常好或令人愉快;很棒。
答案 0 :(得分:0)
使用以下方法:
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()
}
执行此操作的方法很多,但是您似乎是一个初学者,这是最简单的解决方案。
如果您对功能性方法感兴趣,我们将很乐意为您提供帮助。
希望这会有所帮助。