Мне кажется странным поведение DataInputStream.available (), кто-нибудь может объяснить мой вывод в двух разных сценариях ниже? - PullRequest
0 голосов
/ 19 октября 2019

Я пытаюсь понять поведение функции available(). Я не понимаю, почему работает первый сегмент кода, и после того, как я добавил оператор if внутри цикла while, он больше не работает.

Вот коды: Первый:

while (is.available() > 0) {
    int x1 = is.readInt();
    int y1 = is.readInt();
    int x2 = is.readInt();
    int y2 = is.readInt();
    System.out.println("x1 = " + x1);
    System.out.println("y1 = " + y1);
    System.out.println("x2 = " + x2);
    System.out.println("y2 = " + y2);

Second One:

while (is.available() > 0) {
    int x1 = is.readInt();
    if(x1 < -10000) {
        x1 = is.readInt();
    }
    int y1 = is.readInt();
    int x2 = is.readInt();
    int y2 = is.readInt();
    System.out.println("x1 = " + x1);
    System.out.println("y1 = " + y1);
    System.out.println("x2 = " + x2);
    System.out.println("y2 = " + y2);

В первом цикле while все в порядке и функция available() всегда будет возвращать некоторое число, в то время как есть входные данные для чтения. Но второй всегда возвращает 0.

...