Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Java]Необходимо удвоить список считав файл


Автор: pivipi 13.6.2008, 00:11
Вот, задача:
Дан линейный однонаправленный список. "Удвойте" его, вставив после каждого элемента 
его копию (в смысле информационного поля).
Ограничения: информационное полем узла списка является целое число
Формат входного файла input.txt
Первая строка - информационные поля узлов списка через пробел
Формат выходного файла output.txt
Первая строка - информационные поля узлов преобразованного списка через пробел
Пример входного файла
1 2 4 1 4 4 2 4
Пример выходного файла
1 1 2 2 4 4 1 1 4 4 4 4 2 2 4 4

Так вот нужен сам метод удвоения и считывания. 
Знаю что задача ламерская, но все с чего-то начинали. 

Автор: powerOn 13.6.2008, 00:34
Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 

Автор: Stqs 3.7.2008, 01:04
файл in.txt
Код

1 s 2 t 3 q 4 s 5 


Код

import java.io.*;

public class Double{
    String in = ""; // входящие данные
    String out = "";// исходящие данные
    private void importFromFile(String path){
        try {
            FileInputStream fis = new FileInputStream(path); //открыли поток для чтения из файла
            BufferedReader br = new BufferedReader(new InputStreamReader(fis));// буферизируем данные во время чтения потока 
            in = br.readLine();// читаем 1 строку
            br.close();//закрыли буфер
            fis.close();//закрыли поток
        }catch(FileNotFoundException fnfe){
            System.out.println("FILE NOT FOUND IN "+path+" :"+fnfe.getMessage());
        }catch(IOException ioe){
            System.out.println("CAN'T read file "+ioe.getMessage());
        }
    }
    private void doubling(){
        // разбили входящую строку на массив строк из длинной в  1 символ
        String[] s = in.split(" ");
        // в цикле удваиваем данные
        
        for (int i=0;i<s.length;i++){
            try {
                if ((Integer)Integer.parseInt(s[i]) instanceof Integer)//типа проверяем является ли символ целым числом
                    out += s[i]+s[i]+" ";
            }catch(NumberFormatException nfe){
                // если символ не является числом то пропускаем его
                continue;
            }
        }        
    }
    private void exportToFile(String path){
        try{
            //тоже самое что в импорте тока в другую сторону
            FileOutputStream fos = new FileOutputStream(path);
            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos));
            bw.write(out);
            bw.close();
            fos.close();
        }catch(FileNotFoundException fnfe){
            System.out.println("FILE NOT FOUND IN "+path+" :"+fnfe.getMessage());
        }catch(IOException ioe){
            System.out.println("CAN'T write to file "+ioe.getMessage());
        }
    }
    public static void main(String[] args){
        Double c = new Double();
        c.importFromFile("in.txt");// открываем файл
        c.doubling();//    удваиваем данные
        c.exportToFile("out.txt");//выводим данные
    }
}


файл out.txt
Код

11 22 33 44 55 


ну как бы вот. ламерский вопрос - ламерский ответ ;)
если где не прав прошу исправить.

Автор: LSD 3.7.2008, 11:11
Цитата(Stqs @  3.7.2008,  02:04 Найти цитируемый пост)
если где не прав прошу исправить.

Не стоит называть свои классы именами которые совпадают с именами классов J2SE, т.е. лучше класс было назвать DoubleList. В остальном вроде все нормально smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)