Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 17.12.2014
Сообщений: 11

Стек, работающий с объектами класса Box

15.01.2016, 16:39. Показов 1060. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Нужно реализовать стек, работающий с объектами класса Box. Есть код реализации самого стека и класс бокс отдельно. не понимаю, как все это нужно скомпоновать с рамках лабораторной работы.


Java
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
public class Stack{
    int []myStack = new int[10];
    int tos=-1;
    public void print(){
        for (int i=0; i<tos+1; i++){
            System.out.println(myStack[i]);
        }
    }
    public void push(int elem){
        if (tos == myStack.length)
            System.out.println("Стек заполнен");
            else
                myStack[++tos] = elem;
    }
    
    public int pop(){
        if(tos<0){
            System.out.println("Ошибка!");
            return 0;
        }
        else return myStack[tos--];
    }
 
    public static void main(String[] args){
        Stack myStack = new Stack();//экземпляр класса
        
        
        
        myStack.push(28);
        myStack.push(5);
        myStack.pop();
        myStack.push(12);
        myStack.print();
    }
}
__________________________________
Java
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
public class Box {
    double width;
    double height;
    double depth;
    
    void volume(){
        System.out.println("Объем равен" + width*height*depth);
    }
    void color(){
        System.out.println("Цвет коробки - черный");
    }
}
 
class BoxProb1{
    public static void main(String[] args){
        Box myBox=new Box();
        
        myBox.width=10;
        myBox.height=20;
        myBox.depth=15;
        
        myBox.volume();
        myBox.color();
}
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.01.2016, 16:39
Ответы с готовыми решениями:

Взаимодействие с объектами класса
Здравствуйте. Подскажите, пожалуйста, 1) как обратиться к объекту класса, созданному в виде new ИмяКласса(), то есть к объекту без...

Стек с объектами
Ребят, у меня есть базовый класс и три дочерних класса. Нужно чтобы объекты доччерних хранились в стеках. Вобщем должно быть три стека=/ но...

Как из другого класса управлять объектами класса Form1 ?
Добрый вечер, подскажите, пожалуйста. Создал форму Form1, создал отдельный класс (подписчик на одно событие из Форм1) , в котором ,вроде...

6
 Аватар для Lumber
345 / 141 / 51
Регистрация: 02.12.2015
Сообщений: 333
15.01.2016, 17:43
А тема лабораторной какая? Может надо на основе коллекций стек сделать.

Ну а если на основе этого кода, то просто поменять тип с int на Box.

Java
1
2
3
4
5
6
7
8
9
10
11
Box[] myStack = new Box[10];
 
// ...
 
public void push(Box elem)
 
// ...
 
public Box pop()
 
//...
ну и т.д.
0
10 / 11 / 6
Регистрация: 11.05.2015
Сообщений: 101
15.01.2016, 17:48
как-то так, только боксы инициализировать с разными значениями, это я для теста через цикл посоздавал,
и метод pop дореализовать, какова его суть вообще здесь
Java
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
public class AddToStack {
    public static void main(String[] args) {
        Box myBox = new Box();
 
        myBox.width = 10;
        myBox.height = 20;
        myBox.depth = 15;
 
        Stack myStack = new Stack();
        int i = 0;
        while (i < 15) {
            myStack.push(myBox);
            i++;
        }
        myStack.print();
    }
}
 
class Box {
    double width;
    double height;
    double depth;
 
    void volume() {
        System.out.println("Объем равен " + width * height * depth);
    }
 
    void color() {
        System.out.println("Цвет коробки - черный");
    }
}
 
class Stack {
    Box[] myStack = new Box[10];
    int tos = -1;
 
    public void print() {
        for (int i = 0; i < tos + 1; i++) {
            myStack[i].color();
            myStack[i].volume();
 
        }
    }
 
    public void push(Box elem) {
        if (tos == myStack.length - 1)
            System.out.println("Стек заполнен");
        else
            myStack[++tos] = elem;
    }
}
0
 Аватар для Kotik_leapold
111 / 98 / 84
Регистрация: 18.12.2015
Сообщений: 567
15.01.2016, 18:11
Здраствуйте, очень интересная тема.
В java есть отдельный класс для работы со стеком: java.util.Stack.
Можно использовать его основные методы:
Java
1
2
3
4
5
6
7
              boolean empty() - Служит для проверки стека на наличие элементов — он возвращает true, если стек пуст.
              Object peek() - Возвращает верхний элемент, не удаляя его из стека.
              Object pop() - Извлекает верхний элемент удаляя его из стека.
              Object push(Object item) - Помещает элемент в вершину стека.
              int search(Object o) - Метод ищет заданный элемент в стеке, возвращая количество операций pop, 
                                        которые требуются для того чтобы перевести искомый элемент в вершину стека. 
                                        Если заданный элемент в стеке отсутствует, этот метод возвращает -1.
Добавлено через 5 минут
Если для этого случая, то можно сделать вот так:

Java
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
      public class Stack{
                Box []myStack = new Box[10];
                int tos=-1;
    
                public void print(){
                    for (int i=0; i<myStack.length; i++){
                         System.out.println(myStack[i]);
                    }
                }
 
                public void push(Box box){
                      if (tos == myStack.length)
                            System.out.println("Стек заполнен");
                      else
                             myStack[++tos] = box;
                  }
    
                  public int pop(){
                        if(tos<0){
                             System.out.println("Ошибка!");
                             return 0;
                        } else return myStack[tos--];
                  }
 
                  public static void main(String[] args){
                         Stack myStack = new Stack();//экземпляр класса
        
                         myStack.push(new Box());
                         myStack.push(new Box());
                         myStack.pop();
                         myStack.push(new Box());
                         myStack.print();
                 }
           }
0
10 / 11 / 6
Регистрация: 11.05.2015
Сообщений: 101
15.01.2016, 18:27
Цитата Сообщение от Kotik_leapold Посмотреть сообщение
Java
1
2
3
4
5
6
public int pop(){
* * * * * * * * * * * * if(tos<0){
* * * * * * * * * * * * * * *System.out.println("Ошибка!");
* * * * * * * * * * * * * * *return 0;
* * * * * * * * * * * * } else return myStack[tos--];
* * * * * * * * * }
а как работает ваш блок?
тип возвращаемого значения int, если условие верно то вы передаете ноль, а если ложно, то myStack[tos--];
a myStack[tos--] вернет ведь объект Box, конструкция не будет работать
0
 Аватар для Kotik_leapold
111 / 98 / 84
Регистрация: 18.12.2015
Сообщений: 567
16.01.2016, 15:10
Все правельно, код должен следуещим:

Java
1
2
3
4
5
6
7
8
        public Box pop(){
                  if(tos<0){
                        System.out.println("Ошибка!");
                        return 0;
                  } else {
                        return myStack[tos--];
                  }
        }
0
10 / 11 / 6
Регистрация: 11.05.2015
Сообщений: 101
16.01.2016, 15:19
Цитата Сообщение от Kotik_leapold Посмотреть сообщение
Все правельно, код должен следуещим:
Цитата Сообщение от Kotik_leapold Посмотреть сообщение
Java
1
2
3
4
5
6
7
8
public Box pop(){
if(tos<0){
System.out.println("Ошибка!");
return 0;
} else {
return myStack[tos--];
}
}
Но перед этим у вас стоял тип возвращаемого значения int.
И даже так код не будет работать, потому что теперь вы сделали тип возвращаемого значения Box, а в одном из return возвращаете числовое значение, конкретно ноль.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.01.2016, 15:19
Помогаю со студенческими работами здесь

Оптимизация работы метода класса с объектами класса [C++]
Здравствуйте! Я хочу сделать 25 000 объектов класса, в последствии они все будут разными, но сейчас, для упрощения задачи, я делаю их...

Трудности с объектами класса
Доброго времени суток. В общем проблема у меня такая: Я создаю объект класса Int_Data и с помощью метода ToString() добавляю его в...

Сортировка массива с объектами класса
#include &lt;iostream&gt; #include &lt;string&gt; using namespace std; class tovary { private: string name; double cina; int kod; ...

Действия со всеми объектами класса
Есть два класса с рядом данных и методов. Через конструктор одного программа создает кучу объектов. Мне надо чтобы из всех объектов...

Столкновение с неизвестными объектами класса
Есть три класса: A, B, C Указатели на объект B хранятся в векторе vec_b в каждом объекте класса А Когда создаётся объект класса А, то...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru