2010-02-10 2 views
0

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

class FileHandler { 
BufferedReader data; 
DataInputStream in; 

    public FileHandler(String fileName) { 
    try { 
     data = new BufferedReader(new FileReader(fileName)); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

public FiFo fileToLines() { 

///////////////////here is where i need ur help whats teh string size//////////////////// 

    private FiFo lines=new FiFo(data.) 
     String line = ""; 
    try { 
     while ((line = data.readLine()) != null) { 
      lines.add(line); 
     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    }*/ 
    return lines; 
} 

public void closeFile() { 
    try { 
     data.close(); 

    } 

    catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

public class FiFo { 

    private int index; 
    private String[] queue; 

    public FiFo(int size) 
{ 
      queue=new String[size]; 
     index=0; 

} 

public void add(String element) 
{ 
    queue[index]=element; 
    index++; 
} 
public void remove() 
{ 
    int temp=0; 
    while(temp!=index) 
    { 
     queue[temp]=queue[temp+1]; 
     temp++; 
    } 
    index--; 
} 

public String get() 
{ 
    return queue[0]; 
} 

public int size() 
{ 
    return index; 
} 

public void printQueue() 
{ 
    for (int i=0;i<=index;i++) 
     System.out.println(queue[i]); 
} 
+0

Ваше форматирование очень сильно испортилось. Не могли бы вы попытаться изменить свой вопрос, снова вставить свой код, а затем выбрать его и нажать кнопку «Пример кода», которая читает «101010»? Похоже, вы нажали кнопку blockquote, которая не делает то, что вы намеревались. –

+0

Мне жаль, что я новичок в этом ... я попытался его повторить .... leme знаю, нужна ли еще работа – Shaz

+0

Я не хочу быть грамматикой нацистов, но я думаю, что люди оценят ваш вопрос подробнее если вы потратите время, чтобы записать целые слова («be» вместо «b», «let me» вместо «leme» и т. д.). Если вы продемонстрируете, что вложите немного усилий в этот вопрос, люди будут более склонны прикладывать некоторые усилия к ответам. –

ответ

0

Почему вы хотите реализовать свой класс Fifo? Это домашнее задание?

Почему бы не использовать this class:

public Queue fileToLines() { 

    LinkedList<String> lines = new LinkedList<String>(); 


    String line = ""; 
    try { 
     while ((line = data.readLine()) != null) { 
      lines.add(line); 
     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    }*/ 
    return lines; 
} 

С этим, вы не должны знать количество строк в файле.

Вы действительно хотите иметь количество строк в файле, see this topic.

+0

его домашнее задание я должен реализовать очередь – Shaz

+0

В этом случае вы можете реализовать очередь, для которой нет необходимости знать начальный размер. Инициализируйте свою очередь размером (скажем) 100, затем каждый раз, когда вы добавляете элемент, проверьте, достаточно ли размер. Если нет, добавьте больше размера в свой массив. (создайте новый массив хранения и используйте java.util.Arrays.copy, чтобы скопировать старое в новое). –

0

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

+0

спасибо, может предложить, что лучше всего использовать String Array в FiFo private или сделать его общедоступным, потому что мне также нужно сравнить 2 и найти общие элементы – Shaz