powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Помогите написсать прогу!!!(очень нужно , очень срочно:()
12 сообщений из 37, страница 2 из 2
Помогите написсать прогу!!!(очень нужно , очень срочно:()
    #34821698
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
everestгыг
это тестовое задание на курсы по джаве..вощем я уже отправила..мне б терь к собеседованию разобраться в программе....
Зачем же тебе курсы? Мы бы обучили тут, книжек тебе насоветовали...
...
Рейтинг: 0 / 0
Помогите написсать прогу!!!(очень нужно , очень срочно:()
    #34821839
untitled
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jusio2 untitled

А где так учат код писать?

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

А где так учат код писать?

а что то не так? скажите, я исправлюсь)Почему бы не объединить блоки try-catch в один?
...
Рейтинг: 0 / 0
Помогите написсать прогу!!!(очень нужно , очень срочно:()
    #34822092
untitled
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sendoff Почему бы не объединить блоки try-catch в один?

можно, но если так сделать, то такая запись (без firstname) не будет обработана

<entry>
<surname>Twain</surname>
<number>+375 29 632494</number>
</entry>
...
Рейтинг: 0 / 0
Помогите написсать прогу!!!(очень нужно , очень срочно:()
    #34822442
sendoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
untitled sendoff Почему бы не объединить блоки try-catch в один?

можно, но если так сделать, то такая запись (без firstname) не будет обработана

<entry>
<surname>Twain</surname>
<number>+375 29 632494</number>
</entry>Тогда, мне кажется, что более предпочительный вариант, перед парсингом распознать, какие атрибуты есть. Такой код будет более читабельным.
...
Рейтинг: 0 / 0
Помогите написсать прогу!!!(очень нужно , очень срочно:()
    #34822611
Фотография Софтверный проктолог
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для любителей кэширования:

Код: 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.
101.
 package  com.forward.test.goods;

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

 import  javax.xml.parsers.*;

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


 public   class  PhoneBookReader  extends  DefaultHandler
{
     private   final  String searchableTag = "surname";
     private   final  String dataTag = "number";

     private  Map<String, Collection<String>> cache =  new  HashMap<String, Collection<String>> ();

     public  PhoneBookReader ()
    {
    }

     private  StringBuffer valueBuffer =  new  StringBuffer();

     private  String lastSubject;

     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)) {

                Collection<String> subjects = cache.get(lastSubject);
                 if  (subjects ==  null ) {
                    subjects =  new  ArrayList<String> ();
                    cache.put(lastSubject, subjects);
                }
                subjects.add(val);

                lastSubject =  null ;

            }  else   if  (qName.equals( this .searchableTag)) {
                lastSubject = val.toLowerCase();
            }
        }
        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  Collection<String> getPhones(String surname) {
         return  cache.get(surname.toLowerCase());
    }


     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();

            SAXParserFactory factory = SAXParserFactory.newInstance();
            factory.setValidating(false);
            SAXParser parser = factory.newSAXParser();
            parser.parse( new  File(args[ 0 ]), reader);

            System.out.println("Search for surname '" + args[1] + "' = " + reader.getPhones(args[ 1 ]));
            System.out.println("Search for surname 'Ham' = " + reader.getPhones("Ham"));
            System.out.println("Search for surname 'kvakva' = " + reader.getPhones("kvakva"));

        }
    }
}

...
Рейтинг: 0 / 0
Помогите написсать прогу!!!(очень нужно , очень срочно:()
    #34822640
mijer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А мне больше так нравиться:
Код: 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.
 import  java.io.IOException;
 import  java.io.StringReader;
 import  java.util.List;

 import  org.jdom.Document;
 import  org.jdom.JDOMException;
 import  org.jdom.Text;
 import  org.jdom.input.SAXBuilder;
 import  org.jdom.xpath.XPath;

 public   class  Test {

     private   static   final  String XML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?> \n" +
                                      "<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" +
                                      "    <entry> \n" +
                                      "        <firstname>Jo</firstname> \n" +
                                      "        <surname>Dirty</surname> \n" +
                                      "        <number>+375 29 332495</number> \n" +
                                      "    </entry> \n" +
                                      "</phonebook>";

     public   static   void  main(String[] args)  throws  JDOMException, IOException {
        String surname = "Dirty";
        SAXBuilder builder =  new  SAXBuilder();
        Document document = builder.build( new  StringReader(XML));
        List<Text> phones = XPath.selectNodes(document, 
                "/phonebook/entry[lower-case(surname) = lower-case('" + surname + "')]/number/text()");

         for (Text text : phones) {
            System.out.println(text.getTextTrim());
        }
    }
}
...
Рейтинг: 0 / 0
Помогите написсать прогу!!!(очень нужно , очень срочно:()
    #34822645
Фотография Софтверный проктолог
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mijerА мне больше так нравиться:
...
Sarin уже говорил о том, что всё сильно упрощается, если объем данных позволяет построить DOM-модель.
...
Рейтинг: 0 / 0
Помогите написсать прогу!!!(очень нужно , очень срочно:()
    #34822681
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Софтверный проктолог mijerА мне больше так нравиться:
...
Sarin уже говорил о том, что всё сильно упрощается, если объем данных позволяет построить DOM-модель.
Я не уверен на все сто, но мне кажется, что SAX тоже читает файл целиком. Если ему невалидный попытаться скормить он сразу сдохнет отрыгнув эксепшин.

Я говорил про то, что все приведённые варианты (кроме, кажется, одного) делают просто поиск. Надо же реализовать быстрый поиск!
...
Рейтинг: 0 / 0
Помогите написсать прогу!!!(очень нужно , очень срочно:()
    #34822685
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А то меряются тут все саксами и икспатхами... :) Я тож может икспатхи писать умею=))

Код: plaintext
Meo voto
...
Рейтинг: 0 / 0
Помогите написсать прогу!!!(очень нужно , очень срочно:()
    #34822688
Фотография Софтверный проктолог
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sarin
Я не уверен на все сто, но мне кажется, что SAX тоже читает файл целиком. Если ему невалидный попытаться скормить он сразу сдохнет отрыгнув эксепшин.

Я говорил про то, что все приведённые варианты (кроме, кажется, одного) делают просто поиск. Надо же реализовать быстрый поиск!
Принцип работы SAX-парсера — сканирование файла с вызовом ряда методов, которые ты можешь переписать. Можно прервать его работу в любой момент.
Если включен валидатор — таки да, читает целиком.
...
Рейтинг: 0 / 0
Помогите написсать прогу!!!(очень нужно , очень срочно:()
    #34822929
jusio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
untitled jusio2 untitled

А где так учат код писать?

а что то не так? скажите, я исправлюсь)

За подобный код увольняют в ту же секунду без выходного пособия. Ваш код в лучшем случае в четыре раза медленнее чем то что предложил использовать софтверный проктолог. Советую подумать что делает split и сколько обьектов создаётся за один пробег цикла в вашем коде.
...
Рейтинг: 0 / 0
12 сообщений из 37, страница 2 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Помогите написсать прогу!!!(очень нужно , очень срочно:()
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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