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


Автор: Berliner 24.9.2006, 13:02
Здраствуйте, нужна помощь в дописании прогаммы на Java. Это поиск по сайту 

Код

String[] items = {"ATM00071", "ATM00072", "ATM00073"};
Pattern p;
Matcher m;
for (int i=0; i<items.length; i++) {
  p = Pattern.compile(items[i] + ".*?(?:<td.*?){3}<font[^>]*>\\s*(.*?)\\s*</font>",
    Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL);
  m = p.matcher(strBuffer);
  System.out.print(items[i] + " - ");
  if (m.find())
    System.out.println(m.group(1));
  else
    System.out.println("NO");
};



1.Надо носмотреть че прога не правильно ищет по сайту
2. Данные из массива читать из текстового файла ATM00071", "ATM00072", "ATM00073";
3. Сделать простой GUI(1-2 кнопки+ вывод результата поиска) . 
4. Задавать поиск по сайту через опеределенный промежуток времени
Кто может дописать программу помогите пожалуста.

Автор: LSD 25.9.2006, 10:54
Цитата(Berliner @  24.9.2006,  14:02 Найти цитируемый пост)
1.Надо носмотреть че прога не правильно ищет по сайту

Тестовый пример когда она неправильно ищет, а заодно объяснение того что она должна искать.

Цитата(Berliner @  24.9.2006,  14:02 Найти цитируемый пост)
2. Данные из массива читать из текстового файла ATM00071", "ATM00072", "ATM00073";

Код
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("file.txt")));
ArrayList<String> list = new ArrayList<String>();
String str;
while((str = reader.readLine()) != null)
  list.add(str.trim());
reader.close();


Цитата(Berliner @  24.9.2006,  14:02 Найти цитируемый пост)
4. Задавать поиск по сайту через опеределенный промежуток времени

Используй javax.swing.Timer:
Код
Timer timer = new Timer(5 * 60 * 1000, new ActionListener()
{
  public void actionPerformed(ActionEvent e)
  {
    //make search
  }
});

Автор: Berliner 5.10.2006, 11:08
Спрасиб за ответ.
неправильно ищет не находит букву N -ошибка в регуляке.

Эта програмка должна анализировать сайт на сайте отображается состояние cash point-ов, если ATM не работает то высвечивется N в определееном месте. Каждый банкомат имеет свое имя. (как "подключиться к сайту" я знаю). 
сложности следующие: 
мне нужно чтобы найдя банкомат(по имени) с помощью регялярного выражения(банкомат по имени я нахожу)

 определить есть ли связь буква Y или N(проанализировать текст на несколько строк ниже <DIV align=left><FONT size=-1>N</FONT></DIV></TD>).
Если есть(Y) то ищем другой банкомат и проверяем связь. Если Нет связи высвечиваем сообщение нету связи и дальше ищем, пока не просомтрим все банкоматы у меня не получается реализовать этот алгоритм.

Код

width="10%"><A title="Посмотреть детально" 
            href="http://192.168.64.5:7777/atmcity/jsp/monitor/detail.jsp?PSSWD3=H2605&amp;T_ID=ATM00071"><FONT 
а вот номер ATM00071            size=-1>ATM00071 </FONT></A></TD>
          <TD width="12%" bgColor=#ffff00><FONT size=-1>Внимание:есть 
            ошибки</FONT></TD>
          <TD width="19%"><FONT size=-1>...</FONT></TD>
          <TD width="3%" bgColor=#80ff80>
вот тут N значит не работает ATM00071   <DIV align=left><FONT size=-1>N</FONT></DIV></TD>
          <TD width="12%"><FONT size=-1><A 
            href="http://192.168.64.5:7777/atmcity/jsp/monitor/last_dsps.jsp?PSSWD=122042">Последняя 
            выдача </A></FONT></TD>
          <TD width="8%" bgColor=#ffff00>
            <DIV align=center><FONT size=-1>2</FONT></DIV></TD></TR>
        <TR bgColor=#ffffff>
          <TD width="10%"><A title="Посмотреть детально" 
            href="http://192.168.64.5:7777/atmcity/jsp/monitor/detail.jsp?PSSWD3=H2605&amp;T_ID=ATM00072"><FONT 
            size=-1>ATM00072 </FONT></A></TD>
          <TD width="12%" bgColor=#ffffff><FONT size=-1>Внимание</FONT></TD>
          <TD width="19%"><FONT size=-1>...</FONT></TD>
          <TD width="3%" bgColor=#80ff80>
            <DIV align=left><FONT size=-1>Y</FONT></DIV></TD>
          <TD width="12%"><FONT size=-1><A 
            href="http://192.168.64.5:7777/atmcity/jsp/monitor/last_dsps.jsp?PSSWD=122048">Последняя 
            выдача </A></FONT></TD>
          <TD width="8%" bgColor=#80ff80>
            <DIV align=center><FONT size=-1>0</FONT></DIV></TD></TR>
        <TR bgColor=#ffffff>
          <TD width="10%"><A title="Посмотреть детально" 
            href="http://192.168.64.5:7777/atmcity/jsp/monitor/detail.jsp?PSSWD3=H2605&amp;T_ID=ATM00073"><FONT 

А как сделать если я хочу например 1строка в фалйе настройка для таймера- все остальные строки(1 элемент в  строке) - данные для массива. И чтобы можно было читать сверху вниз эти данные в массив. Этот код подойдет?
Код

BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("file.txt")));
ArrayList<String> list = new ArrayList<String>();
String str;
while((str = reader.readLine()) != null)
  list.add(str.trim());
reader.close();


Автор: LSD 5.10.2006, 11:36
Цитата(Berliner @  5.10.2006,  12:08 Найти цитируемый пост)
А как сделать если я хочу например 1строка в фалйе настройка для таймера- все остальные строки(1 элемент в  строке) - данные для массива. И чтобы можно было читать сверху вниз эти данные в массив. Этот код подойдет?

Данный код прочитает все строки из файла и поместит их в ArrayList, выкинув начальные и конечные пробелы и переводы строки. Если первую строку надо обрабатывать особо, то сделай так:
Код
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("file.txt")));
ArrayList<String> list = new ArrayList<String>();
String firstString = reader.readLine();
String str;
while((str = reader.readLine()) != null)
  list.add(str.trim());
reader.close();

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