Добрый день, понемногу начинаю изучать Java (с андроидом), естественно нужен практикум, так вот, решил написать простенькую программу, в которой есть две кнопки и целочисленная переменная.
Две кнопки "bHP" и "bDHP" повышают и понижают нашу переменную, для этого я реализовал два класса: один, "Main Activity", отображает Текст (в моем случае переменную), и содержит в себе методы кнопок, второй же хранит в себе ту самую переменную.
В нем я реализовал методы "сеттер" и "геттер". Проблема в том, что все работает, за малым исключением - при нажатии кнопки, насколько я понял, происходит задержка ввиду того, что сначала происходит передача данных переменной; в общем, насколько я понял, "Геттер" я неправильно сделал, на большее не хватает мозгов (из литературы Читаю Сиерра,и Шилда).
Стыдно писать такое, но еще постыднее не знать, простите за неудобство.
Вот код:
private int money;
Health heal = new Health();
int j = heal.getHP();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState != null) {
money = savedInstanceState.getInt("money", money);
}
money();
healView();
}
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
savedInstanceState.putInt("money", money);
}
public void onMon(View v) {
int min = 100;
int max = 150;
Random r = new Random();
int money1 = r.nextInt(max - min + 1) + min;
money = money + money1;
TextView moneyView = (TextView) findViewById(R.id.money_view);
moneyView.setText(String.format("%08d%n", money));
}
public void money() {
TextView moneyView = (TextView) findViewById(R.id.money_view);
moneyView.setText(String.format("%08d%n", money));
}
public void healView (){
int j = heal.getHP();
TextView HealthView = (TextView) findViewById(R.id.Health_view);
HealthView.setText(String.valueOf(j));}
public void bHP (View view) {
int j = heal.getHP();
heal.setHP(10);
TextView HealthView = (TextView) findViewById(R.id.Health_view);
HealthView.setText(String.valueOf(j));}
public void bDHP (View view) {
int j = heal.getHP();
heal.setHP(-10);
TextView HealthView = (TextView) findViewById(R.id.Health_view);
HealthView.setText(String.valueOf(j));}
}
Класс Health
public class Health {
private int HP;
public int setHP (int newHP) {
HP=HP+newHP;
return newHP;
}
public int getHP() {
return this.HP;
}
}
Если можно ,важно не то что сделать.а лучше объяснить или жать ссылку на годную книгу ресурс,но от примера не откажусь тоже,благодарен заранее.
Вероятно оно работает не так как вы хотите потому что вы сначала берете значение переменной(int j = heal.getHP();
), затем изменяете ее значение, а затем выводите значение j(то, что взяли до изменения).
Переместите строку int j = heal.getHP();
ниже в обоих методах(bHP
и bDHP
(ужасные, кстати, названия)) и скорее всего все будет нормально
Обычно в классах, типа entity сеттеры и геттеры реализуют просто как
public class Health {
private int HP;
public int getHP() {
return HP;
}
public void setHP(int HP) {
this.HP = HP;
}
}
А уже где-то в логике делают с ними что хотят
Виртуальный выделенный сервер (VDS) становится отличным выбором
Добрый день, при работе с javanio возникает CuncurrentModificationException, вроде стараюсь использовать iterator, и удалять элементы, но всеравно, при одновременном...
Есть приложение использованием карт googlemaps, в нем есть вызов popupmenu по нажатию кнопки в верхнем правом углу приложенияТеперь появилась необходимость...