Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Stack & file & Junit, работа со стеком и файлом, тест кода 
:(
    Опции темы
Integra
Дата 12.12.2007, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 23.4.2007
Где: Омск

Репутация: нет
Всего: нет



Нужна помощь, пожалуйста помогите решить данную задачу:  smile  smile 
Ввести строки из файла, записать в стек. Вывести строки в файл в обратном порядке. Тестирование кода с помощью Junit.
Нужна очень срочно помощь... smile 
PM MAIL ICQ   Вверх
AlexeyVorotnikov
Дата 12.12.2007, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 658
Регистрация: 18.6.2007
Где: Москва

Репутация: 10
Всего: 18



Что именно вам не понятно?


--------------------
RTFM!
Три источника и три составные части Java: The Java Language Specification, Java Platform API Specification, The Java Virtual Machine Specification
PM MAIL   Вверх
Integra
Дата 12.12.2007, 19:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 23.4.2007
Где: Омск

Репутация: нет
Всего: нет



как из файла взять строки в стек, и потом их записать туда обратно(или в новый файл).
в начале это..
а потом и сам тест этой мини программы%) smile 
PM MAIL ICQ   Вверх
Kangaroo
Дата 12.12.2007, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 21
Всего: 104



Integra, вы попробуйте сами что-нибудь сделать, а если не получиться или ошибки - сразу сюда.. Мы обязательно поможем  smile 

А если не хочется делать самому тогда вам в раздел Vingrad - Колледж / Центр Помощи.


--------------------
Lost....
PM MAIL MSN   Вверх
Maksym
Дата 12.12.2007, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

Репутация: 14
Всего: 62



Integra
Читаем файл, используем такой стек или такой (в зависимости от Вашей версии java), пишем в файл...
PM MAIL   Вверх
Maksym
Дата 12.12.2007, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

Репутация: 14
Всего: 62



Ну и пример простого JUnit теста..

Это сообщение отредактировал(а) Maksym - 12.12.2007, 19:50
PM MAIL   Вверх
Integra
Дата 14.12.2007, 07:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 23.4.2007
Где: Омск

Репутация: нет
Всего: нет



Вот, что у меня получилось... и оно не работает..(((( что не так?? помогите?
Код

package z;
    import java.io.*;
import java.util.Stack;

public class ReadFile{
    public static void main(String[] args){
        try {
      FileReader input = new FileReader(args[0]); 
        
            BufferedReader bufRead = new BufferedReader(input);
           
            String line;    
            int count = 0;  
           
         
            line = bufRead.readLine();
            count++;
        while (line != null){
               System.out.println(count+": "+line);
                line = bufRead.readLine();
               count++;
               Stack stk = new Stack();
               stk.push(count + " " + line+" ");
               try{
                   
                   FileWriter fstream = new FileWriter("out.txt");
                       BufferedWriter out = new BufferedWriter(fstream);
                      
                    int k = 0;
                    while(!stk.empty())
                          
                  out.write((char[]) stk.pop(), count,  k) ;
                   
                   out.close();
                   }catch (Exception e){
                     System.err.println("Error: " + e.getMessage());
                   }
            }
           
            bufRead.close();
           
        }catch (ArrayIndexOutOfBoundsException e){
           
           System.out.println("Usage: java ReadFile filename\n");          

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



PM MAIL ICQ   Вверх
Kangaroo
Дата 14.12.2007, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 21
Всего: 104



Цитата(Integra @  14.12.2007,  06:17 Найти цитируемый пост)
Вот, что у меня получилось... и оно не работает..(((( что не так?? помогите?

Отлично! Теперь не грех и помочь smile
Только ошибки были разные, поэтому я изменил много и написал комментарии
Код

package z;
import java.io.*;    
import java.util.Stack;    
public class ReadFile{    
    public static void main(String[] args){    
        try {    
         //открываем файл для чтения
         FileReader input = new FileReader(args[0]);         
            BufferedReader bufRead = new BufferedReader(input);    
            
            String line;     
            int count = 0;    
            //создаем стек
            Stack stk = new Stack();
            //в цикле читаем строки из файла, пока не достигли конца
            while ((line = bufRead.readLine()) != null){
             //выводим на консоль
             count++;
               System.out.println(count+": "+line);                                    
                //засовываем в стек
               stk.push(count + " " + line+" ");    
               
            }    
            //закрываем
            bufRead.close();
            try{    
                //создаем поток для записи в файл
                FileWriter fstream = new FileWriter("out.txt");    
                    BufferedWriter out = new BufferedWriter(fstream);
                    PrintWriter pw = new PrintWriter(out); //сюда будет удобнее писать, чем в BufferedWriter
                    
                 //из стека записываем в файл
                 while(!stk.empty())    
                        pw.println((String) stk.pop()) ;    
                 
                 //закрываем поток
                  pw.close();    
            }catch (Exception e){    
              System.err.println("Error: " + e.getMessage());    
            }    
            
        }catch (ArrayIndexOutOfBoundsException e){    
            
           System.out.println("Usage: java ReadFile filename\n");           
        }catch (IOException e){    
             
            e.printStackTrace();    
        }    
         
   }    
    
}

Вот на что у меня не хватило времени:
1) Поправь табуляцию, а то черт знает что получается, когда смотришь
2) Зачем тебе блок try/catch вложенный? 

Может что еще пропустил..



--------------------
Lost....
PM MAIL MSN   Вверх
under_sun
Дата 14.12.2007, 20:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 141
Регистрация: 3.10.2007
Где: Ебург

Репутация: нет
Всего: 17



Код

import java.io.*;
import java.util.Stack;

public class Main {

     public static void main(String[] args) throws IOException {
           String line;
           Stack<String> stack = new Stack<String>();
           BufferedReader reader = new BufferedReader( new FileReader("file.txt"));
        
           while ((line = reader.readLine()) != null)
                stack.push(line);
        
           reader.close();
        
           PrintWriter writer = new PrintWriter( new FileWriter("reverse.txt")); 
           while (!stack.empty())
                writer.println(stack.pop());
            
           writer.close();
     }
}

Что надо тестить?
Если класс Stack, то видимо его надо было написать самим, чего ты не указала в теме.
В общем, вот небольшой примерчик тестирования класса Stack из стандартной библиотеки Java.
Код

import java.util.Stack;

import junit.framework.TestCase;

public class StackTest extends TestCase {
//Пишем тесты
    public void testEmptyStack() {
        Stack stack = new Stack();
        //Созданный стек должен быть пустым
        assertTrue( stack.empty() );
        
        stack.push(100);
        //а сейчас уже не пустым
        assertFalse( stack.empty() );
    }
    
    public void testStackMethods() {
         Stack stack = new Stack();
         stack.push(10);
         stack.push(20);
         stack.push(30);
         stack.push(40);
         stack.push(50);
         //Размер
         assertEquals(5, stack.size());
         stack.pop();
         assertEquals(4, stack.size());
         //Вершина стека без удаления
         assertEquals(40, stack.peek());
         //c удалением
         assertEquals(40, stack.pop());
         //И так верно
         assertTrue(stack.peek() == stack.pop());
         //А так нет
         assertFalse(stack.pop() == stack.peek());
         // и т.д.
     }
}


Это сообщение отредактировал(а) under_sun - 15.12.2007, 21:25
--------------------
TMTOWTDI
PM MAIL ICQ   Вверх
Integra
Дата 15.12.2007, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 23.4.2007
Где: Омск

Репутация: нет
Всего: нет



у меня такой вопрос: где прописывать то путь и имя файла - откуда считывается все?? %)
а то я что-то не понимаю%) smile 
и еще вопрос- как тест Junit'ом написать для данной задачи.. ни разу не пробовала... 
PM MAIL ICQ   Вверх
LSD
Дата 15.12.2007, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(Integra @  15.12.2007,  11:13 Найти цитируемый пост)
у меня такой вопрос: где прописывать то путь и имя файла - откуда считывается все??

В командной строке запуска, примерно так:
Код

java z.ReadFile input.txt

где input.txt входной файл.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
LSD
Дата 15.12.2007, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Модератор: я объединил эту тему, с темой из центра помощи.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Integra
Дата 16.12.2007, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 23.4.2007
Где: Омск

Репутация: нет
Всего: нет



как сделать тест фалов, а не стека??  для примера, который дал under_sun ..
PM MAIL ICQ   Вверх
LSD
Дата 16.12.2007, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Читаешь из файлов данные в два ArrayList, проверяешь что размер совпадает, потом для второго вызываешь java.util.Collections.reverse(), и делаешь у ArrayList-ов equals().


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Integra
Дата 20.12.2007, 06:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 23.4.2007
Где: Омск

Репутация: нет
Всего: нет



Огромное спасибо!  smile 
PM MAIL ICQ   Вверх
Integra
Дата 24.12.2007, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 23.4.2007
Где: Омск

Репутация: нет
Всего: нет



Есть еще вопрос про тестирование...
как написать тест: если я добавила еще ListIterator, для того чтобы потом сравнить стек и этот лист (для тестирования)..
вот текст программы:
 
Код

package pak;

import java.io.*;
import java.util.LinkedList;
import java.util.ListIterator;
import java.util.Stack;
public class Main {
     public static void main(String[] args) throws IOException {
           String line;
           Stack<String> stack = new Stack<String>();
           LinkedList<String> ar = new LinkedList<String>();
           BufferedReader reader = new BufferedReader( new FileReader("file.txt"));
        
           while ((line = reader.readLine()) != null)
          stack.push(line);
          reader.close();    
           PrintWriter writer = new PrintWriter( new FileWriter("output.txt")); 
           while (!stack.empty())
                writer.println(stack.pop());          
           writer.close();
           BufferedReader read = new BufferedReader( new FileReader("file.txt"));
           while ((line = read.readLine()) != null)
            ar.add(line);
           ListIterator it = ar.listIterator();
           
           while(it.hasNext())
            System.out.println(it.next());
               ListIterator list = ar.listIterator();
               list.next();
               while(list.hasNext()) 
                list.next();//переход к последнему индексу
                    while(list.hasPrevious())
                        /*вывод в обратном порядке */
                    System.out.print(list.previous() + "  ");
                    reader.close(); 
     }
}


PM MAIL ICQ   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1568 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.