我有这个课的问题(对于非常混乱的代码感到抱歉)。 while(scan.hasNextLine())代码完成循环后,没有任何反应。代码冻结了。 Java没有报告任何错误,但它应该继续运行。
Class是服务器的实现,它从套接字收集带有Rock,Paper或Scissors的消息,随机做出自己的决定并将其发送回客户端。
while (keepRunning == true) {
socket = serverSocket.accept();
InputStream is = socket.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
StringBuffer stringBuffer = new StringBuffer();
String line = null;
Scanner scan = new Scanner(br);
while (scan.hasNextLine()) {
line = scan.nextLine();
stringBuffer.append(line);
stringBuffer.append("\n");
listForServer.add(line);
System.out.println(line);
if (line.contentEquals("SHAPE") == false) {
counter = counter + 1;
}
Random rn = new Random();
int n = 2 - 0 + 1;
int i = rn.nextInt() % n;
int randomNum = 0 + i;
if (randomNum == 0) {
shape = "Rock";
randServerList.add(shape);
} else if (randomNum == 1) {
shape = "Paper";
randServerList.add(shape);
} else {
shape = "Scissors";
randServerList.add(shape);
}
}
scan.close();
System.out.println("Shapes are chosen");
System.out.println("Client has send " + (counter - 1) + "shapes");
}
答案 0 :(得分:0)
如果此扫描仪的输入中有另一行,则返回true。此方法可能在等待输入时阻塞。扫描仪不会超过任何输入。
由于你在循环中有line = scan.nextLine()并且扫描打开它将继续等待输入。因此,代码被阻止,您看不到任何输出。