powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Помогите написсать прогу!!!(очень нужно , очень срочно:()
25 сообщений из 37, страница 1 из 2
Помогите написсать прогу!!!(очень нужно , очень срочно:()
    #34819240
everest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
буду очень благодарна если поможете написать задачку с XML..:
2) Реализовать быстрый поиск телефона по фамилии без учета регистра символов. Справочник хранится в XML файле со следующей структурой.

<phonebook>
<entry>
<firstname>Mark</firstname>
<surname>Twain</surname>
<number>+375 29 632494</number>
</entry>
<entry>
<firstname>Jo</firstname>
<surname>Dirty</surname>
<number>+375 29 332494</number>
</entry>
<entry>
<firstname>Andy</firstname>
<surname>Ham</surname>
<number>+375 29 623494</number>
</entry>

</phonebook>
...
Рейтинг: 0 / 0
Помогите написсать прогу!!!(очень нужно , очень срочно:()
    #34819356
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тема вознагрождения не раскрытк
...
Рейтинг: 0 / 0
Помогите написсать прогу!!!(очень нужно , очень срочно:()
    #34819417
everest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
шчырая беларуская БЛАГОДАРНОСТЬ!!
:)
...
Рейтинг: 0 / 0
Помогите написсать прогу!!!(очень нужно , очень срочно:()
    #34819493
Фотография Софтверный проктолог
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Первый вопрос, я подозреваю — "как прочитать XML из файла"?
...
Рейтинг: 0 / 0
Помогите написсать прогу!!!(очень нужно , очень срочно:()
    #34819554
everest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сознаюсь откровенно..мое представление об XML весьма поверхностно...и если я ещё смогу составить такой документ..то как реализовать поиск(или даже чтение) понему из JAVA никакого понятия вообще не имею:( так что буду очень благодарна если поможете(потому как нужно срочно) и посоветуете какую литературу толковую по этому вопросу, потому как разбираться все равно надо
...
Рейтинг: 0 / 0
Помогите написсать прогу!!!(очень нужно , очень срочно:()
    #34819564
Фотография Софтверный проктолог
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например, так (с помощью SaxParser).

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
 package  com.forward.test.goods;

 import  java.io.*;

 import  javax.xml.parsers.*;

 import  org.xml.sax.*;
 import  org.xml.sax.helpers.*;

 public   class  PhoneBookReader  extends  DefaultHandler
{
     private  String stringToSearch;
     private   final  String searchableTag = "surname";
     private   final  String dataTag = "number";
     public  PhoneBookReader (String search)
    {
         this .stringToSearch = search;
    }

     private  StringBuffer valueBuffer =  new  StringBuffer();

     private   boolean  found = false;
     private   boolean  getPhone = false;
     private  String lastSurname;


     public   void  endElement (String uri, String name, String qName)
             throws  SAXException
    {
        String val = valueBuffer.toString().trim();
         if  (val.length() >  0 ) {
             if  (qName.equals( this .dataTag)) {
                 if  (getPhone) {

                    System.out.println("FOUND PHONE '" + val + "' for '" + lastSurname + "'");
                    found = true;
                    getPhone = false;
                }
            }
             if  (qName.equals( this .searchableTag)) {
                 if  (val.equalsIgnoreCase( this .stringToSearch)) {
                    getPhone = true;
                    lastSurname = val;
                }
            }
        }
        valueBuffer =  new  StringBuffer();
    }

     public   void  characters ( char  ch[],  int  start,  int  length)
    {
         for  ( int  i = start; i < start + length; i++) {
             switch  (ch[i]) {
             case  '\\':
                 break ;
             case  '"':
                 break ;
             case  '\n':
                 break ;
             case  '\r':
                 break ;
             case  '\t':
                 break ;
             default :
                valueBuffer.append(ch[i]);
                 break ;
            }
        }
    }


     public   static   void  main (String args[])
             throws  Exception
    {
         if  (args.length !=  2 ) {
            System.out.println("Use PhoneBookReader <filename> <surnane>");
             return ;
        }  else  {

            System.out.println("Searching '" + args[1] + "' in file '" + args[0] + "'");

            PhoneBookReader reader =  new  PhoneBookReader(args[ 1 ]);

            SAXParserFactory factory = SAXParserFactory.newInstance();
            factory.setValidating(false);
            SAXParser parser = factory.newSAXParser();

            parser.parse( new  File(args[ 0 ]), reader);

             if  (!reader.found) {
                System.out.println("NO PHONES FOUND");
            }
        }
    }
}
...
Рейтинг: 0 / 0
Помогите написсать прогу!!!(очень нужно , очень срочно:()
    #34819566
Фотография Софтверный проктолог
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тьфутымля. Опять логин менять придеццо.
...
Рейтинг: 0 / 0
Помогите написсать прогу!!!(очень нужно , очень срочно:()
    #34819585
everest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо огромное!!
буду пытаться разбираться!!кстати, а в куда указывается файл чтения XML?т.е. куда прописывать где лежит мой справочник..как аргумент?тогда почему там на 2 элемента запрос...туплю...
?
...
Рейтинг: 0 / 0
Помогите написсать прогу!!!(очень нужно , очень срочно:()
    #34819838
maddcast
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Простой выход: XQEngine
Более функциональный: eXist
...
Рейтинг: 0 / 0
Помогите написсать прогу!!!(очень нужно , очень срочно:()
    #34819866
untitled
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а вы не слишком все усложняете?
почему бы не сделать простой парсинг текста, ведь тут по сути поный разбор хмля не нужен.
например как то так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
 public   class  ooo {

     private   static  String getFileContent() {
         return  "<phonebook>\n" +
                "<entry>\n" +
                "<firstname>Mark</firstname>\n" +
                "<surname>Twain</surname>\n" +
                "<number>+375 29 632494</number>\n" +
                "</entry>\n" +
                "<entry>\n" +
                "<firstname>Jo</firstname>\n" +
                "<surname>Dirty</surname>\n" +
                "<number>+375 29 332494</number>\n" +
                "</entry>\n" +
                "<entry>\n" +
                "<firstname>Andy</firstname>\n" +
                "<surname>Ham</surname>\n" +
                "<number>+375 29 623494</number>\n" +
                "</entry>\n" +
                "</phonebook>";
    }

     public   static  String getTelNumber(String surname) {
         try  {
             return  getFileContent().toLowerCase().split("<surname>" + surname.toLowerCase(),  2 )[ 1 ].split("</number>",  2 )[ 0 ].split("<number>",  2 )[ 1 ];
        }  catch  (ArrayIndexOutOfBoundsException e) {
             return   null ;
        }
    }

    //example
     public   static   void  main(String args[]) {
        System.out.println(getTelNumber("twain"));
    }

}

и все, этого мне кажется вполне достаточно)
...
Рейтинг: 0 / 0
Помогите написсать прогу!!!(очень нужно , очень срочно:()
    #34819900
Фотография Софтверный проктолог
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
untitled
и все, этого мне кажется вполне достаточно)
XML подразумевает произвольное форматирование данных внутри тэгов.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
<phonebook>

<entry>
     <firstname>
          Mark
     </firstname>
     <surname>
          Twain
     </surname>
     <number>+ 375   29   632494 </number>
</entry>
<entry>
     <firstname>
Jo</firstname>
     <surname>
          Dirty
               </surname>
     <number>
               + 375   29   332494 
          </number>
</entry>
<entry>
     <firstname>
          Andy
     </firstname>
     <surname>
          Ham
     </surname>
     <number>
          + 375   29   623494 
     </number>
</entry>
…
</phonebook>
...
Рейтинг: 0 / 0
Помогите написсать прогу!!!(очень нужно , очень срочно:()
    #34819901
Фотография Софтверный проктолог
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
untitled
и все, этого мне кажется вполне достаточно)
К тому же ваше решение мгновенно отсасывает как только телефонный номер начинает идти раньше фамилии.
...
Рейтинг: 0 / 0
Помогите написсать прогу!!!(очень нужно , очень срочно:()
    #34819968
everest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Софтверный проктолог:
спасибо огромное, такое решение то что надо!!разобралась что куда надо списывать:)

и вооще всем огромное спасибо за отзывчивость!!
...
Рейтинг: 0 / 0
Помогите написсать прогу!!!(очень нужно , очень срочно:()
    #34820324
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для быстрого поиска надо для начала проиндексировать файл. Тоесть выбрать ключевое поле, отсортировать по нему, а потом использовать алгоритм бинарного поиска. Иначе получится просто телефонный справочник в XML.

Если допустимо зачитать весь XML в память и уже в ней искать, то задача сильно упрощается.

Код: plaintext
Meo voto
...
Рейтинг: 0 / 0
Помогите написсать прогу!!!(очень нужно , очень срочно:()
    #34820332
everest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
учитывая то что я полный чайник в XML..а метод которым решили выше не аодходит?(я и в нем то если честно пока не ахти...тока скомпилировала)
...
Рейтинг: 0 / 0
Помогите написсать прогу!!!(очень нужно , очень срочно:()
    #34820336
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ох, давай аську, или ко мне стучись. Расскажу немного.
...
Рейтинг: 0 / 0
Помогите написсать прогу!!!(очень нужно , очень срочно:()
    #34820371
everest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
к тебе в асю постучаться не получилось--по такому номеру никто не проживает
так что стучись ко мне: 172052195(тока када будешь стучаться отпиши что это ты..а то в сети много турков):)
вопросов у меня море!!;)
...
Рейтинг: 0 / 0
Помогите написсать прогу!!!(очень нужно , очень срочно:()
    #34820529
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
everestк тебе в асю постучаться не получилось--по такому номеру никто не проживает
так что стучись ко мне: 172052195(тока када будешь стучаться отпиши что это ты..а то в сети много турков):)
вопросов у меня море!!;)
Надо перемножить просто было=)

Я к тебе стукнулся, но сейчас убегу. Буду во второй половине дня.
...
Рейтинг: 0 / 0
Помогите написсать прогу!!!(очень нужно , очень срочно:()
    #34821137
Фотография Софтверный проктолог
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SarinДля быстрого поиска надо для начала проиндексировать файл. Тоесть выбрать ключевое поле, отсортировать по нему, а потом использовать алгоритм бинарного поиска. Иначе получится просто телефонный справочник в XML.

Если допустимо зачитать весь XML в память и уже в ней искать, то задача сильно упрощается.
Это когда нам нужно искать на заданном наборе данных более одного раза в единожды запущенном приложении.
Ты уверен, что студентам это нужно?
...
Рейтинг: 0 / 0
Помогите написсать прогу!!!(очень нужно , очень срочно:()
    #34821217
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я уверен в том, что написано про быстрый поиск. Значит надо делать быстрый поиск:)
...
Рейтинг: 0 / 0
Помогите написсать прогу!!!(очень нужно , очень срочно:()
    #34821239
Фотография Софтверный проктолог
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SarinЯ уверен в том, что написано про быстрый поиск. Значит надо делать быстрый поиск:)
Ставлю 50$, что в одиночном прогоне мой вариант будет работать в среднем в 2 раза быстрее твоего (с полным сканированием и построением индекса). А если ты будешь строить еще и DOM модель, а потом искать через XPath — втрое.
...
Рейтинг: 0 / 0
Помогите написсать прогу!!!(очень нужно , очень срочно:()
    #34821331
everest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
гыг
это тестовое задание на курсы по джаве..вощем я уже отправила..мне б терь к собеседованию разобраться в программе....
...
Рейтинг: 0 / 0
Помогите написсать прогу!!!(очень нужно , очень срочно:()
    #34821444
untitled
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Софтверный проктолог
XML подразумевает произвольное форматирование данных внутри тэгов.
К тому же ваше решение мгновенно отсасывает как только телефонный номер начинает идти раньше фамилии.


ок, а если так) :

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
 import  java.util.HashMap;
 import  java.util.HashSet;
 import  java.util.Set;

 public   class  PhoneBook {

     private  HashMap<String, Set<BookEntry>> cache =  new  HashMap<String, Set<BookEntry>>();

     class  BookEntry {
         private  String firstname;
         private  String surname;
         private  String number;

         public  String toString() {
             return  firstname + " " + surname + " " + number;
        }

         public  String getFirstname() {
             return  firstname;
        }

         public   void  setFirstname(String firstname) {
             this .firstname = firstname;
        }

         public  String getSurname() {
             return  surname;
        }

         public   void  setSurname(String surname) {
             this .surname = surname;
        }

         public  String getNumber() {
             return  number;
        }

         public   void  setNumber(String number) {
             this .number = number;
        }
    }

     public  PhoneBook() {
        String[] entries = getFileContent().split("<entry>");
         for  ( int  i =  1 ; i < entries.length; i++) {
            String tmp = entries[i];
            BookEntry entry =  new  BookEntry();
             try  {
                entry.setFirstname(tmp.split("<firstname>")[ 1 ].split("</firstname>")[ 0 ].trim());
            }  catch  (ArrayIndexOutOfBoundsException e) {/**/}
             try  {
                entry.setSurname(tmp.split("<surname>")[ 1 ].split("</surname>")[ 0 ].trim());
            }  catch  (ArrayIndexOutOfBoundsException e) {/**/}
             try  {
                entry.setNumber(tmp.split("<number>")[ 1 ].split("</number>")[ 0 ].trim());
            }  catch  (ArrayIndexOutOfBoundsException e) {/**/}

             if  (cache.containsKey(entry.getSurname())) {
                cache.get(entry.getSurname().toLowerCase()).add(entry);
            }  else  {
                HashSet<BookEntry> set =  new  HashSet<BookEntry>();
                set.add(entry);
                cache.put(entry.getSurname().toLowerCase(), set);
            }
        }

    }

     private  String getFileContent() {
        StringBuffer t = new  StringBuffer("<phonebook>\n" +
                "<entry>\n" +
                "<firstname>Mark</firstname>\n" +
                "<surname>Twain</surname>\n" +
                "<number>+375 29 632494</number>\n" +
                "</entry>\n");
         for  ( int  i =  0 ; i <  10000 ; i++) {
            t.append("<entry>\n" +
                    "<firstname>" + ( char ) i + "</firstname>\n" +
                    "<surname>" + ( char ) (i + i) + "</surname>\n" +
                    "<number>" + ( int ) (i + i /  2 ) + "</number>\n" +
                    "</entry>\n");
        }
        t.append("</phonebook>");
         return  t.toString();
    }


     public  Set<BookEntry> findEntries(String surname) {
         return  cache.get(surname.toLowerCase());
    }

    //example
     public   static   void  main(String args[]) {
        PhoneBook book =  new  PhoneBook();
         for  (BookEntry e : book.findEntries("twain")) {
            System.out.println(e);
        }
    }

}
...
Рейтинг: 0 / 0
Помогите написсать прогу!!!(очень нужно , очень срочно:()
    #34821544
jusio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 untitled

А где так учат код писать?
...
Рейтинг: 0 / 0
Помогите написсать прогу!!!(очень нужно , очень срочно:()
    #34821685
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Софтверный проктолог SarinЯ уверен в том, что написано про быстрый поиск. Значит надо делать быстрый поиск:)
Ставлю 50$, что в одиночном прогоне мой вариант будет работать в среднем в 2 раза быстрее твоего (с полным сканированием и построением индекса). А если ты будешь строить еще и DOM модель, а потом искать через XPath — втрое.
В одиночном - да.
...
Рейтинг: 0 / 0
25 сообщений из 37, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Помогите написсать прогу!!!(очень нужно , очень срочно:()
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]