2014-10-08 2 views
1

Я читаю двоичный файл, и мне нужно разобрать заголовки в этом файле.Как продолжить цикл через DataInputStream?

У меня есть настройка DataInputStream, и мне нужно, чтобы она продолжала цикл по файлу до конца. Я новичок в Java, поэтому не знаю, как я буду переносить это из своего опыта C#. На данный момент у меня есть следующий код:

while (is.position != is.length) {        
    if (card == Staff) { 
     System.out.print(card); 
    } else if (card == Student) { 
     System.out.print(card); 
    } else if (card == Admin) { 
     System.out.print(card); 
    } else { 
     System.out.print("Incorrect"); 
    } 
} 

is является входным потоком я создал, только ошибка у меня есть в первой строке, где цикл в то время как начинается под положением и длиной он говорит, что они не могут быть разрешены или не является полем.

+0

Какой тип данных является карточкой? Кроме того, вероятно, вы должны использовать бесконечный цикл и разорвать, когда значение будет равно -1. –

+0

карта - это строка, студент и администратор - перечисления. У меня есть другой код для его обработки (я немного изменил это для конфиденциальности), все, что мне действительно нужно изменить, это is.Position! = Is.Length, поэтому я могу сказать, пока файл не закончен. Continue – mark602

ответ

1

Глядя на the docs не выглядит DataInputStream имеет поле позиции. Вы могли бы использовать один из других методов, чтобы проверить, доступно ли больше данных, но из вашего примера кода не ясно, что вы пытаетесь сделать.

В настоящее время существует целый ряд вопросов, которые я могу увидеть код:

  1. Если card, Staff, Student и Admin имеют тип String, то вам нужно сравнить их с помощью метода equals(String s), не == ссылочное равенство (то есть card.equals(Staff), а не card == Staff)
  2. Вы, похоже, не повторяетесь в своей петле. Если вы ничего не сделаете, чтобы изменить значение is.position (я знаю, что это на самом деле не существует, но гипотетически говоря ...), то если вы можете войти в цикл, вы никогда не оставите его.
  3. Вы не меняете значение card. Если вы повторяете какое-то определенное количество раз, у вас будет только один и тот же вывод, напечатанный снова и снова, что, вероятно, не так, как вы планировали.
Смежные вопросы