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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание метода, класса или другое, нет возможности понять как сделать класс 
:(
    Опции темы
Lazarus Long
  Дата 25.10.2010, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Доброго времени суток!
Есть задание:
Объект «множество символов заданной мощности». Предусмотреть возможность операции присваивания, объединения двух множеств, вывода на печать элементов множества, а так же метод отвечающий на вопрос – принадлежит ли указанное значение множеству. Конструктор должен позволить создавать объекты без и с начальной инициализацией. Мощность множества задается при создании объекта.

Реализовал подобное (прил. 1) в виде последовательности действий (создание множеств, присвоение значения элементу множества, объединение двух множеств в одно, вывод на экран, определение принадлежности) и попытался преобразовать в класс, дабы сделать удобнее и по заданию требуется....

Так вот при создании класса не получается заполнить множество и производить с ним операции (прил. 2).

Подскажите пожалуйста в каком направлении лучше капать?
Перестать пользоваться массивами в классе, использовать списки или нечто другое?

Приложение 1
Код

import java.util.Random;
import java.util.ArrayList;

class Set {
 public static void main (String args []) {
 
 String alphabet[];
 alphabet = new String[] {"0","1","2","3","4","5",
  "6","7","8","9","0","A","B","C","D","E","F","G",
  "H","I","J","K","L","M","N","O","P","Q","R","S",
  "T","U","V","W","X","Y","Z","A","B","C","D","E",
  "F","G","H","I","J","K","L","M","N","O","P","Q",
  "R","S","T","U","V","W","X","Y","Z"};
 String massFir[];
 String massSec[];

 Random rand = new Random();
 int randN = rand.nextInt(61);
 int min=2;
 int max=10;
 int n = rand.nextInt(max - min + 1) + min;
 int m = rand.nextInt(max - min + 1) + min;

 massFir = new String[n];
 massSec = new String[m];

 //заполнение множеств символами
 System.out.format("\nCreating 2 set's: \"massFir\" & \"massSec\"");
 System.out.format("\nThis is first set \"massFir\":");
 for (int i=0; i<n; i++) {
  randN = rand.nextInt(61);
  massFir[i] = alphabet[randN];
  System.out.print(" " +massFir[i]);
 }
 System.out.format("\nThis is second set \"massSec\":");
 for (int i=0; i<m; i++) {
  randN = rand.nextInt(61);
  massSec[i] = alphabet[randN];
  System.out.print(" " +massSec[i]);
 }

 //присвоение элемента множеству
 randN = rand.nextInt(61);
 int pos = n-1;
 String val = alphabet[randN];
 massFir[pos-1] = val;
 System.out.format("\nAssing to set \"massFir\" element \"%s\" in %s position", val, pos);

 //присвоение элемента множеству
 randN = rand.nextInt(61);
 int pos2 = m-1;
 String val2 = alphabet[randN];
 massSec[pos2-1] = val2;
 System.out.format("\nAssing to set \"massSec\" element \"%s\" in %s position", val2, pos2);
 
 //объединение двух множеств в одно
 String massRes[];
 int b = n+m;
 massRes = new String[b];
 for (int i=0;i<n; i++) massRes[i]=massFir[i];
 for (int i=n;i<b; i++) massRes[i]=massSec[i-n];

 //вывод на экран нового множества
 System.out.format("\nThis is our new set \"massRes\":");
 for (int i=0; i<b; i++) {
  System.out.print(" " +massRes[i]);
 }
 
 //определение принадлежности
 randN = rand.nextInt(61);
 String lookE = alphabet[randN];
 int count = 0;
 System.out.format("\nLooking for value \"%s\" in the set \"massRes\":", lookE);
 for (int i=0; i<b; i++) {
  if (massRes[i]==lookE) {
   System.out.format("\n -find in position %s", i+1);
   count++;
  }
 }
 if (count==0) System.out.format("\n -not found!");
 }
}


Приложение 2
Код

import java.util.Random;
import java.util.ArrayList;

class Constructor {
 
 int n;
 
//massFir[]; //главное множество
 String[] massFir = new String[n];
 String massSec[]; //второстепенное множество
 String massRes[]; //результирующее множество
// String alphabet[]; //множество символов
 String [] alphabet = new String[] {"0","1","2","3","4","5",
  "6","7","8","9","0","A","B","C","D","E","F","G",
  "H","I","J","K","L","M","N","O","P","Q","R","S",
  "T","U","V","W","X","Y","Z","A","B","C","D","E",
  "F","G","H","I","J","K","L","M","N","O","P","Q",
  "R","S","T","U","V","W","X","Y","Z"};

 Random rand = new Random(); //случайная генерация

 //конструктор главного множества
 public Constructor(int n) {
  massFir = new String[n];
  System.out.format("\nCreating new set....");
  for (int i=0; i<n; i++) {
   int randN = rand.nextInt(61);
   massFir[i] = alphabet[randN];
  }
 }

 //по-умолчанию
 public Constructor() {
  this(8);
 }
 
 //вывод на печать
 public void printS() {
  System.out.format("\nSet consists:");
  for (int i=0; i<n; i++) System.out.print(" " +massFir[i]);
 }

 //присваивание элемента множеству
 public void assiE(int pos, String val) {
  massFir[pos] = val;
  System.out.format("\nAssing to set element \"%s\" in %s position", val, pos);
 }

 //определение принадлежности элемента
 public void lookE(String val) {
  int count = 0;
  System.out.format("\nLooking for value \"%s\" in the set:", val);
  for (int i=0; i<n; i++) {
   if (massFir[i]==val) {
    System.out.format("\n -find in position %s", i+1);
    count++;
   }
  }
 if (count==0) System.out.format("\n -not found!");
 }
}

class Set {
 public static void main (String args []) {

 Constructor mass = new Constructor(10);
 mass.printS();
 mass.assiE(5, "A");
 mass.printS();
 mass.lookE("A");

 }
}


Заранее благодарен!
PM MAIL ICQ   Вверх
AntonSaburov
Дата 26.10.2010, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

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



По идее надо действительно начать пользоваться коллекциями. Скорее всего наследниками Set. Там и операции над множествами есть всякие.
PM MAIL WWW ICQ   Вверх
carper
Дата 26.10.2010, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Lazarus Long @  25.10.2010,  23:31 Найти цитируемый пост)
Подскажите пожалуйста в каком направлении лучше капать?


Я бы начал копать с того, что посмотрел чему равняется n в методе 
Код

public void printS() {
  System.out.format("\nSet consists:");
  for (int i=0; i<n; i++) System.out.print(" " +massFir[i]);
 }


У вас похоже n нигде и ничем не инициализируется.

Продолжил бы я с того, что попытался понять что это я такое написал и, главное, зачем:
Код

int n;
String[] massFir = new String[n];


Потом я бы подумал, а что мне дает в плане понятности кода, хотя бы вот такой метод:
Код

//присваивание элемента множеству
 public void assiE(int pos, String val) {
  massFir[pos] = val;
  System.out.format("\nAssing to set element \"%s\" in %s position", val, pos);
 }


Если не принимать во внимание отладочную печать, гарантированно здесь не нужную, т.к. по сути
проверяете JVM, то его вызов только затрудняет читаемость кода.

Ну и т.д.
PM MAIL   Вверх
0x00
Дата 26.10.2010, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Посмотри в сторону векторов или коллекций, с ними очень удобно работать.
PM MAIL   Вверх
Skipy
Дата 27.10.2010, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 487
Регистрация: 24.8.2006
Где: Москва, Россия

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



Цитата(0x00 @ 26.10.2010,  14:53)
Посмотри в сторону векторов или коллекций, с ними очень удобно работать.

Вообще-то вектор является коллекцией. Так что "или" тут выглядит как-то странно...


--------------------
С уважением,
Евгений aka Skipy
www.skipy.ru
PM MAIL WWW ICQ   Вверх
0x00
Дата 3.11.2010, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Skipy @ 27.10.2010,  12:11)
Цитата(0x00 @ 26.10.2010,  14:53)
Посмотри в сторону векторов или коллекций, с ними очень удобно работать.

Вообще-то вектор является коллекцией. Так что "или" тут выглядит как-то странно...

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

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

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


 




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


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

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