У меня проблема с этим классом (извините за действительно грязный код). После этого (scan.hasNextLine()) код выполняется с помощью цикла, ничего не происходит. Код просто зависает. Java не сообщает о какой-либо ошибке, но она должна продолжаться.Ошибка Java while loop, не синтаксис
Класс - это реализация сервера, который собирает сообщения с помощью 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");
}
Пожалуйста, уменьшите код до соответствующей части, а не отправляйте всю свою программу. Что говорит ваш отладчик? –
В 'while (keepRunning = true)' '=' является оператором присваивания, '==' является сопоставлением. Чтобы избежать таких ошибок, просто используйте 'while (keepRunning)' – Pshemo
Спасибо за отзыв. Отладчик ничего не говорит, он должен печатать сообщение «Shapes выбрано», но вместо этого он просто останавливается после цикла while. – tijetof