Это закодировано в Java в android studio
Так что я полный нуб в кодировании и у меня проблема с этим калькулятором урона, который я пытаюсь создать для этого mmorpg Я играю на основе формулы расчета, которую разработчик поделился ...
Так вот, как я изначально написал программу:
double skill, bonus, level, attack, min, max, avg, min2, avg2, max2;
EditText txtskill;
EditText txtbonus;
EditText txtlevel;
EditText txtattack;
TextView resmin;
TextView resavg;
TextView resmax;
TextView resmin2;
TextView resavg2;
TextView resmax2;
Button btncalculate;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txtskill = findViewById(R.id.txtskill);
txtbonus = findViewById(R.id.txtbonus);
txtlevel = findViewById(R.id.txtlevel);
txtattack = findViewById(R.id.txtattack);
resmin = findViewById(R.id.txtmin);
resavg = findViewById(R.id.txtavg);
resmax = findViewById(R.id.txtmax);
resmin2 = findViewById(R.id.txtmin2);
resavg2 = findViewById(R.id.txtavg2);
resmax2 = findViewById(R.id.txtmax2);
btncalculate = findViewById(R.id.btncalculate);
btncalculate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
skill = Double.parseDouble(txtskill.getText().toString());
bonus = Double.parseDouble(txtbonus.getText().toString());
level = Double.parseDouble(txtlevel.getText().toString());
attack = Double.parseDouble(txtattack.getText().toString());
DecimalFormat df = new DecimalFormat("0.00");
min = ((skill + bonus) / 2 + level / 4 + attack) * 0.9;
max = ((skill + bonus) / 2 + level / 4 + attack) * 1.1;
avg = (min + max) / 2;
min2 = min * 1.05;
max2 = max * 1.05;
avg2 = avg * 1.05;
resmin.setText(df.format(min));
resavg.setText(df.format(avg));
resmax.setText(df.format(max));
resmin2.setText(df.format(min2));
resavg2.setText(df.format(avg2));
resmax2.setText(df.format(max2));
}
});
}
, которая прекрасно работает ... но проблема в том, что оказалось, что фактический урон в игре фактически рассчитывается либо с помощью целых чисел, либо с округлением в каждой скобке ...
Вот как я пытался это исправить:
int skill, bonus, level, attack, min, max, avg, min2, avg2, max2;
EditText txtskill;
EditText txtbonus;
EditText txtlevel;
EditText txtattack;
TextView resmin;
TextView resavg;
TextView resmax;
TextView resmin2;
TextView resavg2;
TextView resmax2;
Button btncalculate;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txtskill = findViewById(R.id.txtskill);
txtbonus = findViewById(R.id.txtbonus);
txtlevel = findViewById(R.id.txtlevel);
txtattack = findViewById(R.id.txtattack);
resmin = findViewById(R.id.txtmin);
resavg = findViewById(R.id.txtavg);
resmax = findViewById(R.id.txtmax);
resmin2 = findViewById(R.id.txtmin2);
resavg2 = findViewById(R.id.txtavg2);
resmax2 = findViewById(R.id.txtmax2);
btncalculate = findViewById(R.id.btncalculate);
btncalculate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
skill = Integer.parseInt(txtskill.getText().toString());
bonus = Integer.parseInt(txtbonus.getText().toString());
level = Integer.parseInt(txtlevel.getText().toString());
attack = Integer.parseInt(txtattack.getText().toString());
min = ((skill + bonus) / 2 + level / 4 + attack) * 0.9;
max = ((skill + bonus) / 2 + level / 4 + attack) * 1.1;
avg = (min + max) / 2;
min2 = min * 1.05;
max2 = max * 1.05;
avg2 = avg * 1.05;
// ^^ В этой части, где я начинаю использовать значения для выполнения вычислений, отладчик говорит мне, что ожидает двойной
resmin.setText(min));
resavg.setText(avg));
resmax.setText(max));
resmin2.setText(min2));
resavg2.setText(avg2));
resmax2.setText(max2));
}
});
}
Так что мой вопрос: как заставить эту программу использовать целые числа или, по крайней мере, округлить все внутри каждой скобки? Заранее спасибо за ответы!