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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите с обработкой массива 
:(
    Опции темы
atem32
Дата 17.11.2011, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



есть html файл с параметрами и  2апплета
1апплет выводит на страницу исходный массив
2апплет выводит на страницу обработанный массив
Код

// Файл Lr21.java
// Лабораторная работы №2 "Классы в языке Java"
// ================================================================ 
// Данный апплет Lr21 обеспечивает создание и инициализацию массива
// на основе параметров из HTML-файла, а также вывод элементов 
// исходного массива в окно апплета.
// ================================================================ 
// Аналогичный массив создается и инициализируется при выполнении
// апплета Lr22, который , кроме того, выполняет обработку массива  
// в соответствии с заданием и выводит на экран результаты.
// ================================================================
// Класс Elem, обеспечивающий хранение данных типов int, String 
// и доступ к ним, и класс Array, предназначенный для хранения 
// массива объектов класса Elem и работы с массивом, представлены 
// в файле Lr22.java.
// ================================================================ 
// Выполнение апплетов Lr21 и Lr22, расположенных на одной HTML-
// странице, позволяет сравнить исходный массив с массивом,  
// полученным в результате обработки.
// ================================================================ 

import  java.awt.*;
import java.applet.*;

// Класс, производный от класса Applet
public class Lr21 extends Applet

 // Исходный массив для сравнения с результатами обработки
 Array  myArray21;
 // Флаг ошибки 
 int errf = 0;
 // Строки сообщения об ошибке     
 String msg, msgException = "123";
 // Шрифты для вывода исходного массива
 Font fnt1, fnt2;
 public void init()
 { 
  // Строки для представления параметров апплета 
  // Переменные, используемые при разборе параметров апплета
  int b1 = 0, b2 = 0,b3 = 0, e1, e2, e3;
  // Строка для представления извлекаемых из параметров  
  // данных типов int и String текущего злемента массива 
  // Переменная для хранения данного типа int текущего злемента массива  
  int i;
  // Флаг инициализации массива  
  boolean flag = true;

  fnt1 = new Font("Dialog", Font.BOLD, 14);
  fnt2 = new Font("Dialog", Font.PLAIN, 14);

  // Получение параметров апплета (исходных данных)
 String s1 = getParameter("SIZE");
 String s2 = getParameter("NUMBERS");
 String s3 = getParameter("STRINGS");
 String s4 = getParameter("NAZV");
  // Создание и инициализация массива
  if (s1 != null && s2 !=null && s3 != null && s4 != null)
    {  
      try { 
        i = Integer.parseInt(s1);
        myArray21 = new Array(i);
      }
      catch( Exception e) {
        msg = "Ошибка при указании размера массива:";
        msgException = e.toString(); 
        errf = 1;
        return; 
      } 
      // Разбор строк-параметров и добавление элементов в массив 
      while(flag)
      {
        try {
        e1 = s2.indexOf(",", b1);
            if(e1 == -1) 
             {e1 = s2.length(); flag = false;}
            String str = s2.substring(b1, e1);
            b1 = e1 + 1;
        i = Integer.parseInt(str);
    // Внимание!!!
    // Браузер (например, MS IE) может не поддерживать
    // методы parseType() некоторых классов-оболочек.
    // В этом случае следует воспользоваться другими
    // средствами для преобразования строкового
    // представления числа в данное простого типа.
    // Например, для значения переменной f типа float
    // используйте оператор :
    //   f = Float.valueOf(str). floatValue();
 
            e2 = s3.indexOf(",", b2);
            if(e2 == -1) 
              {e2 = s3.length(); flag = false;}
            str = s3.substring(b2, e2); 
            b2 = e2 + 1;
            
            e3 = s4.indexOf(",", b3);
            if(e3 == -1) 
              {e3 = s4.length(); flag = false;}
           String naz = s4.substring(b3, e3); 
            b3 = e3 + 1;
  
            myArray21.add(i, str +naz);

        }
        catch( Exception e) {
          msg = "Ошибка при инициализации массива:";
        msgException = e.toString(); 
            errf = 1;
            return; 
        }
      }      
    }
  else 
    {
      msg = "Отсутствует параметр в файле .html"; 
      errf = 1;
    }
 }//init

 public void paint(Graphics g)
 {          
   if (errf == 0)
     {
      // Отображение в строке состояния браузера числа
      // инициализированных элементов массива

      showStatus("Lr21-realSize = " + myArray21.getRealSize());
      g.setFont(fnt1);
      g.drawString("Исходный массив:", 50, 25);
      g.setFont(fnt2);
      showArray(g, myArray21, 50);  
     }
   else 
     {
      g.drawString(msg, 50, 70);
      g.drawString(msgException, 50, 85);
     }
 }//paint

// Метод вывода элементов массива 
 void showArray(Graphics g, Array mas, int xpos)
 { 
  Elem element;
  for(int i = 0; i < mas.getRealSize(); i++)
    {
      element = mas.at(i);
      g.drawString("Элемент "+i+": " + element.getInt(), 
            xpos, 50 + 25*i);
      g.drawString(element.getStr(), xpos + 75, 60 + 25*i);
    }
 }//showArray

}//Lr21



 
апплет2
Код

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
import  java.awt.*;
import java.applet.*;
class Elem
   {
     // Поля класса
     private int intField;
     private String strField;
       
     Elem (int i,String s)
       {intField = i;
    strField = s;}

     // Методы доступа к данным
     String getStr()
       {return strField;}

     int getInt()
       {return intField;}

     void setStr(String str)
       {strField=str;}
   }//Elem

//Класс для хранения массива объектов класса Elem
class Array
   {  
     // Поля класса
     private Elem arrElem[];
     private int realSize;   

     // Конструктор класса
     Array(int size)
       {arrElem = new Elem[size];    
        realSize = 0;
       }
     // Методы работы с массивом
     // ------------------------
     // Возвращает размер массива 
     int getSize()
       {return arrElem.length;}

     // Возвращает число действительных элементов массива
     int getRealSize()
       {return realSize;}

     // Возвращает указанный элемент массива 
     Elem at(int i)
       {return (arrElem[i]);}

     // Возвращает индекс элемента массива с указанными значениями
     // данных типов int, String. Если такой элемент отсутствует,
     // возвращает -1.
     int indexOf(int ii, String ss) 
       {
        for (int k = 0; k < realSize; k++)
           if(arrElem[k].getInt() == ii && 
              ss.equals(arrElem[k].getStr()))
              return k;
        return -1;
       }
     // Данный метод indexOf(), не используемый в классе Lr22,
     // включен для демонстрации метода equals() класса String.
     // Метод equals(), в отличие от оператора==, сравнивает 
     // содержимое String-объектов, а не ссылки на них!

     // Добавляет в массив элемент с указанными значениями
     // данных типов int, String  
     void add(int i,String s)                                  
        {arrElem[realSize] = new Elem(i, s); 
     realSize++;
        }

     // Возвращает индекс элемента массива с самой длинной строкой
     int great()
        {int i, j,lenr,len;
         for (i = len = j = 0; i < realSize; i++)
            {lenr=(arrElem[i].getStr()).length();
             if (lenr > len)
         {len = lenr; j = i;}
            }
         return j;
        }

     // Удаляет элементы массива, в которых целочисленные 
     // данные не превышают указанного значения 
     void delete(int j)
        {int i, k;
         for (i = k = 0;i < realSize; i++)
            if (arrElem[i].getInt() > j)
               arrElem[k++] = arrElem[i];
         realSize = k;
        }
     // Обратите внимание! Элементы массива (ссылки на объекты типа
     // Elem), не подлежащие удалению, просто переписываются в новую
     // позицию, удаляемые элементы - пропускаются. Определяется
     // новое число действительных элементов массива.
   }//Array
public class Lr22 extends Applet {
 Array  myArray22;              // массив для обработки  
 int errf = 0;                  // флаг ошибки      
 String msg, msgException = ""; // строки сообщения об ошибке                       // сумма целочисленных данных элементов массива
 int index;                     // индекс злемента с самой длинной строкой
 Font fnt1, fnt2;               // шрифты для вывода результатов обработки
  public void init()
 { 
  // Строки для представления параметров апплета 
  //String s1, s2, s3, s4;
  // Переменные, используемые при разборе параметров апплета
  int b1 = 0, b2 = 0,b3 = 0, e1, e2, e3;
  // Строка для представления извлекаемых из параметров  
  // данных типов int и String текущего злемента массива 
  String strings;
  String str;
  String nam;
  // Переменная для хранения данного типа int текущего злемента массива  
  int i;
  Elem elem;
  // Флаг инициализации массива  
  boolean flag = true;
  // Число инициализированных (действительных) элементов массива
  int rs;


  fnt1 = new Font("Dialog", Font.BOLD, 14);
  fnt2 = new Font("Dialog", Font.PLAIN, 14);

  // Получение параметров апплета (исходных данных)
  Applet appLR21 = getAppletContext().getApplet("Lr21");
  String s1 = appLR21.getParameter("SIZE");
  String s2 = appLR21.getParameter("NUMBERS");
  String s3 = appLR21.getParameter("STRINGS");
  String s4 = appLR21.getParameter("NAZV");
  // Создание и инициализация массива
  if (s1 != null && s2 !=null && s3 != null && s4 != null)
    {  
      try { 
        i = Integer.parseInt(s1);
        myArray22 = new Array(i);
      }
      catch( Exception e) {
        msg = "Ошибка при указании размера массива:";
        msgException = e.toString(); 
        errf = 1;
        return; 
      } 
      // Разбор строк-параметров и добавление элементов в массив 
      while(flag)
      {
        try {
        e1 = s2.indexOf(",", b1);
            if(e1 == -1) 
             {e1 = s2.length(); flag = false;}
            str = s2.substring(b1, e1);
            b1 = e1 + 1;
        i = Integer.parseInt(str);
    // Внимание!!!
    // Браузер (например, MS IE) может не поддерживать
    // методы parseType() некоторых классов-оболочек.
    // В этом случае следует воспользоваться другими
    // средствами для преобразования строкового
    // представления числа в данное простого типа.
    // Например, для значения переменной f типа float
    // используйте оператор :
    //   f = Float.valueOf(str). floatValue();
 
            e2 = s3.indexOf(",", b2);
            if(e2 == -1) 
              {e2 = s3.length(); flag = false;}
             strings = s3.substring(b2, e2); 
            b2 = e2 + 1;
            
            e3 = s4.indexOf(",", b3);
            if(e3 == -1) 
              {e3 = s4.length(); flag = false;}
            nam = s4.substring(b3, e3); 
            b3 = e3 + 1;
               if(i > 1000)
                 { strings =    strings.toUpperCase();
                 nam = nam.toUpperCase();
         }
              
               //else 
               //{ nam = null;}
               
    
            // Обработка строк при инициализации:
            // преобразование символов строк в символы нижнего регистра
            myArray22.add(i,strings +nam );
            //if ((all.length()%2)==1)
             //  {all = nam+123;}
         
            }
        catch( Exception e) {
            msg = "Ошибка при инициализации массива:";
            msgException = e.toString();  
            errf = 1;
            return; 
           }
      }
       
      // Обработка массива в соответствии с заданием
      // ------------------------------------------------------------   
      rs = myArray22.getRealSize();
          
      // В оставшихся элементах массива замена первого символа строки
      // первым символом самой длинной в массиве строки
      
          {index = myArray22.great();
           
            
          }
      // ------------------------------------------------------------
    }
  else 
    {
     msg = "Отсутствует параметр в файле .html"; 
   errf = 1;
    }
    }

public void paint(Graphics g)
 { int rs;
   Elem element;
   String s;
  
   if (errf == 0)
     {
      rs = myArray22.getRealSize();
      // Отображение в строке состояния браузера числа
      // действительных элементов массива
      showStatus("Lr22-realSize = " + rs);
      
      if (rs > 0)
         {
          g.setFont(fnt1);
          g.drawString("Результаты обработки:",50,25);
          g.setFont(fnt2);
          showArray(g, myArray22, 50);
              
          element = myArray22.at(index);
          s = element.getStr();
  
          g.drawString("Самая длинная строка: " + s, 50, 85 + 25*rs);
         }
       else
           g.drawString("Массив после обработки пуст", 50, 70);       
    }
   else 
    {
     g.drawString(msg, 50, 70);
     g.drawString(msgException, 50, 85);
    }
 }//paint

// Метод вывода элементов массива 
 void showArray(Graphics g, Array mas, int xpos)
 { 
  Elem element;
  for(int i = 0; i < mas.getRealSize(); i++)
    {
      element = mas.at(i);
      g.drawString("Элемент "+i+": " + element.getInt(),
            xpos, 50 + 25*i);
      g.drawString(element.getStr(), xpos + 75, 60 + 25*i);
    }
 }//showArray
}



html
Код

<HTML>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<TITLE>Лабораторная работа N2</TITLE>
</head>
<CENTER>
<P><H4>Студент гр. САБ-114 Полякова А. В.</H4>
<HR WIDTH = 85%>
<TABLE>
<CAPTION><H3>Лабораторная работа N2 "Классы в языке Java"</H3></caption>
<TR>
<TD>
<APPLET
         CODE = Lr21.class
             NAME = Lr21
             WIDTH = 500 
             HEIGHT = 500>
<PARAM NAME="SIZE" VALUE="12">
<PARAM NAME="NUMBERS" VALUE="245,354,666,951,1001,15,1200,555,222,1932">
<PARAM NAME="STRINGS" VALUE="Горький  ,Пушкин   ,Достоевский  ,Некрасов   , Булгаков   ,Толстой  ,Арбузов  ,Каверин  ,Грин   ,Гайдар  -">
<PARAM NAME="NAZV" VALUE="Мертвые души,Повести Белкина,Преступление и наказание,В больнице,Мастер и Маргарита,Петр I,Жестокие игры,Два капитана,Алые паруса,Тимур и его команда">
</APPLET></TD>
<TD><APPLET  
         CODE = Lr22.class 
             WIDTH = 500 
             HEIGHT = 500>
</APPLET></TD>
</TR>
</table>
<HR WIDTH = 85%>
</CENTER>
</HTML>



мне необходимо чтобы если в имени автора (NAME) чётное число символов то убрать из массива этот элемент

как это сделать?
сегодня весь день мучался а не придумал как

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

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

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


 




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


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

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