Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 17.04.2013
Сообщений: 54
1

Как вызвать метод класса в основном классе

17.08.2018, 02:53. Просмотров 1402. Ответов 8
Метки нет (Все метки)

Имеется класс Main и класс Towers
Java
1
2
3
4
public class Main{
    public static void main (String[] args) {
    }
}
Кликните здесь для просмотра всего текста
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
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
public class Towers extends Main {
 
    Towers machineGun = new Towers();
    Towers rocket = new Towers();
    Towers laser = new Towers();
    Towers mortar = new Towers();
 
 
    private int dps;
    private int time;
    private int level;
    private int exp;
    private int expToLvlUp;
    private int dealtDmg;
    private int count; /* Все переменные, которые будут относиться к Tower */
 
/* Тут перечень геттеров и сеттеров */
    public int getExp() {
        return exp;
    }
 
    public int getTime() {
        return time;
    }
 
    public void setTime(int time) {
        this.time = time;
    }
 
    public void setExp(int exp) {
        this.exp = exp;
    }
 
    public int getExpToLvlUp() {
        return expToLvlUp;
    }
 
    public void setExpToLvlUp(int expToLvlUp) {
        this.expToLvlUp = expToLvlUp;
    }
 
    public int getDealtDmg() {
        return dealtDmg;
    }
 
    public void setDealtDmg(int dealtDmg) {
        this.dealtDmg = dealtDmg;
    }
 
    public int getCount() {
        return count;
    }
 
    public void setCount(int count) {
        this.count = count;
    }
 
    public int getDps() {
        return dps;
    }
 
    public void setDps(int dps) {
        this.dps = dps;
    }
 
    public int getLevel() {
        return level;
    }
 
    public void setLevel(int level) {
        this.level = level;
    }
 
    public void setParams (Towers towers, int dps, int expToLvlUp) {
        towers.setDps(dps);
        towers.setExpToLvlUp(expToLvlUp);
    }
/* Конец геттеров и сеттеров */
 
    public void shoot () {     /* Метод атаки башни */
        setCount(0);
        setTime(200);
        setExp(0);
        setLevel(1);
        switch (getLevel()) {
            case 1:
                setParams(machineGun, 11, 1000);
                setParams(rocket, 50, 1200);
                setParams(laser, 180, 1800);
                setParams(mortar, 25, 800);
                break;
            case 2:
                setParams(machineGun, 14, 1400);
                setParams(rocket, 70, 1900);
                setParams(laser, 240, 2500);
                setParams(mortar, 28, 1100);
                break;
            case 3:
                setParams(machineGun, 18, 1900);
                setParams(rocket, 85, 2200);
                setParams(laser, 270, 3700);
                setParams(mortar, 31, 1700);
                break;
            case 4:
                setParams(machineGun, 22, 2500);
                setParams(rocket,102, 2825);
                setParams(laser, 320, 4400);
                setParams(mortar, 35, 2000);
                break;
            case 5:
                setParams(machineGun, 27, 3500);
                setParams(rocket, 145, 2800);
                setParams(laser, 370, 5500);
                setParams(mortar, 37, 2400);
                break;
            default:
                setParams(machineGun, 11, 1000);
                setParams(rocket, 50, 1200);
                setParams(laser, 180, 1800);
                setParams(mortar, 25, 800);
                break;
        }
 
        setDealtDmg(getDps()*getTime());  /* Нанесенный урон башней */
            if (getDealtDmg() > 500) {
                setCount(getCount()+1);
                setExp(getExp()+100);
                setExpToLvlUp(getExpToLvlUp() - getExp());
                if (getExpToLvlUp() <= 0) {
                    setLevel(getLevel() + 1);
                }
                /* Если нанесенный урон больше 500, увеличиваем счетчик на 1,
                прибавляем 100 опыта, высчитываем остаток опыта до нового уровня,
                если остаток 0, то повышаем уровень
                 */
                System.out.println("Вы нанесли " + getDealtDmg() + " урона. " + "Вы убили " + getCount() + " врагов.");
                System.out.println("Получено " + getExp() + " опыта." + "До следующего уровня " + getExpToLvlUp() + " опыта");
            }
    }
 
}


Как вызвать в классе Main метод shoot?
Если создать объекты класса Towers в Main, тогда мой switch ломается. А если создавать в классе Towers, тогда не могу вызвать, допустим, machineGun.shoot() в классе Main.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.08.2018, 02:53
Ответы с готовыми решениями:

Как вызвать метод из одного класса чтобы он был виден в другом классе?(Отсылка от старой темы)
Добрый вечер,Я почти разобрался только у меня последний вопрос Как исправить?Смотрите скрин. Надо...

В классе OnlyData написать метод, который выводит значение переменной i и вызвать этот метод в том же классе
Я конечно понимаю, что задача оч простая, но все же. В классе OnlyData нужно написать метод,...

Как в классе А у объекта класса B вызвать метод класса B ?
Есть Класс A и класс B . В классе B лежит объект типа ArrayList , назовём его arrayList, в этом...

Как в классе А у объекта класса B вызвать метод класса B ?
Есть Класс A и класс B . В классе B лежит объект типа ArrayList , назовём его arrayList, в этом же...

8
22 / 10 / 2
Регистрация: 25.06.2018
Сообщений: 155
17.08.2018, 06:09 2
Java
1
2
3
4
5
6
7
8
9
10
11
public class Main{
    public static void main (String[] args) {
        
//создаешь экземпляр класса Towers 
          Towers exemp = new Towers ();
 
//вызываешь нужный метод например getExp
           exemp.getExp();
        
    }
}
Добавлено через 1 минуту
Зачем создавать экземпляры класса Towers в самом классе Towers?
0
603 / 481 / 171
Регистрация: 02.03.2010
Сообщений: 1,194
17.08.2018, 06:39 3
Цитата Сообщение от cinemaster4d Посмотреть сообщение
Зачем создавать экземпляры класса Towers в самом классе Towers?
Более интересно, почему Towers наследован от Main...
0
37 / 35 / 9
Регистрация: 13.02.2017
Сообщений: 205
Завершенные тесты: 1
17.08.2018, 09:45 4
Цитата Сообщение от _ViPeR_ Посмотреть сообщение
Более интересно, почему Towers наследован от Main...
Не то слово!

Цитата Сообщение от Jambazi12 Посмотреть сообщение
Как вызвать в классе Main метод shoot?
Уберите нафиг бессмысленное наследование от Main.
Уберите создание объектов класса в самом классе.
Уберите клавиатуру.
Возьмите любую хорошую книгу по ООП и почитайте про смысл организации классов.

Добавлено через 3 минуты
Даже если отбросить нереальность организации. Вопрос - а это так должно быть, что при выстреле уровень в любом случае становится единицей?
1
0 / 0 / 0
Регистрация: 17.04.2013
Сообщений: 54
17.08.2018, 14:12  [ТС] 5
Цитата Сообщение от cinemaster4d Посмотреть сообщение
Зачем создавать экземпляры класса Towers в самом классе Towers?
затем что забыл их перенести в мэйн. И еси внимательно читал, тогда ломается мой свитч
Цитата Сообщение от _ViPeR_ Посмотреть сообщение
Более интересно, почему Towers наследован от Main
Потому что было 3 часа ночи
Цитата Сообщение от alexjun Посмотреть сообщение
Вопрос - а это так должно быть, что при выстреле уровень в любом случае становится единицей?
Уровень у меня по дефолту 1. Тот сеттер в методе убрал
0
955 / 574 / 136
Регистрация: 23.05.2012
Сообщений: 7,370
17.08.2018, 16:33 6
Jambazi12, а то, что если попробовать создать экземпляр класса Towers Вы мигом получите java.lang.StackOverflowError это совсем не смущает?
Поясню почему. Пишем в main'е одну строчку Towers towers = new Towers();. Но для создания towers должен выполнится блок инициализации:
Java
1
2
3
4
Towers machineGun = new Towers();
Towers rocket = new Towers();
Towers laser = new Towers();
Towers mortar = new Towers();
В первой же строке опять new Towers() и для создания machineGun так же будет выполнен подобный блок инициализиции. Таким образом происходит рекурсивное создание объектов пока не закончится стек: прежде, чем создать экземпляр класса Towers необходимо создать еще 4-ре экземпляра класса Towers...

Проблема не в shoot или switch, а вообще в дизайне класса. Советую переписать с нуля и не в три часа ночи.
0
1404 / 1115 / 274
Регистрация: 17.02.2014
Сообщений: 5,974
25.08.2018, 10:38 7
Jambazi12, в любой час ночи и дня, и даже в обкурке поможет это Про отладку программ - дебагер
0
955 / 574 / 136
Регистрация: 23.05.2012
Сообщений: 7,370
25.08.2018, 22:35 8
Aviz__, человек код написать не может. Чём ему дебаг поможет?
0
1404 / 1115 / 274
Регистрация: 17.02.2014
Сообщений: 5,974
26.08.2018, 09:00 9
JIeIIIa, что-то же может, а дебагинг оживляет код в буквальном смысле.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.08.2018, 09:00

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Наследование от Иоанна. Есть ли возможность как-то вызвать метод Gleb из класса а в классе с
Привет всем. Подскажите пожалуйста using System; class a { protected int x; protected...

Вызвать метод класса в другом классе
Подскажите как мне вызвать метод класса в другом классе ?

Как вызвать метод в активити классе из обычного не активити класса?
Есть активити в котором вводятся логин и пароль. При нажатии кнопки &quot;войти&quot; в отдельном классе...

Как вызвать определенный метод переданного класса через метод другого класса?
Добрый день. Захотел я вызвать в методе класса метод некоего другого класса, о котором я пока не...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.