Столкнулся с такой проблемой: Написал парсер файлов, таких как этот: Код (Text): #Это комментарий a=0 #здесь а равно 0 b=5 #comment of b c=7 #Это комментарий#который будет опущен парсером #ret Прогу уложил в 209 строк. Работает. Однако, если файл заканчивается словом RET, то выдается Исключение "Stack is Empty". Если после RET вставить еще какую-нибудь строку, то все работает. Ради интереса написал метод Код (Text): boolean IS_STACK_EMPTY() и увидел такой парадокс: Стек становится пустым при десятом прогоне программы. То есть файл не читается. Однако если в этот файл что-нибудь записать, то он начинает снова нормально читаться. И так до десятого прогона. Дальше опять надо после RET вставлять строку. Первый раз такое вижу. Это что, особенность файловой системы?
censored Если бы ошибка была связана с кодом, я бы тут не задавал такой вопрос. Проблема с файлом по любому. Кстати, в строке 208 у меня всего 1 символ: ' } '. Нарушая правила форума, я приведу код... Но я в нем уверен. Код (Text): // и так, на этом участке происходит обработка файла void fileParseNow(){ /** Let COUNTER will be NULL **/ COUNTER=0; Thread proc = new Thread( new Runnable(){ public void start() { COUNTER=COUNTER+1; run(); } public void run() { try{ BufferedReader br = new BufferedReader (new InputStreamReader (fis)); //COUNTER=COUNTER+1; String CurrentLine = null; while ( (CurrentLine=br.readLine())!=null) { StringTokenizer parserComment = new StringTokenizer(CurrentLine,"#",false); /** Parsing comments **/ if (parserComment.countTokens()==1){ /** #This is Single line comment such as **/ printf("Comment: %s\n",CurrentLine); }else if( (parserComment.countTokens()>2) || (parserComment.countTokens()==2)){ /** Here we can see #comment with more lines#### **/ String line=parserComment.nextToken(); String comment=parserComment.nextToken(); printf("Line: %s\nComment: %s\n",line,comment); /** Next, we parsing LINE **/ StringTokenizer parserLine = new StringTokenizer(line,"="); String FIRST = parserLine.nextToken(); String SECOND = parserLine.nextToken(); PUSH ( FIRST, SECOND ); printf("%s :: %s\n",FIRST,SECOND); } } printf("Stopped with error (EOF?)"); }catch (Exception e){ e.printStackTrace(); } } } ); proc.start(); } Думаю, модераторы простят. Алгоритм сбора данных из файла нормальный. Хотя... Может я с Thread ом переборщил...
device думаю censored стебанулся т к как без кода можно предположить что случилось? )))врядли. бока в твоем коде