Как взять значение двух полей EditText и выполнить простую математику

1

Я новичок в разработке Android и работаю над простым практическим проектом, в котором пользователь вводит число в два поля EditText и нажимает кнопку с надписью "Calculate", и отображается сумма двух чисел. Вот код, который у меня есть до сих пор, но я не знаю, как добавить два строковых значения и вывести его в поле TextView с именем "answer":

public void calNumbers(View view) {
    EditText text = (EditText)findViewById(R.id.edit_number1);
    String value = text.getText().toString();       

    EditText text2 = (EditText)findViewById(R.id.edit_number2);
    String value2 = text2.getText().toString();              

    TextView answer = (TextView) findViewById(R.id.answer);      
}
  • 2
    Как дополнение к ответам ниже, не забудьте перехватить NumberFormatException при разборе в случае, если пользователь вводит недопустимую запись (т.е. не числовую).
Теги:

4 ответа

7
Лучший ответ

Вам нужно будет преобразовать их в числа (int, float, long и т.д.) для предварительной арифметики. Затем преобразовать результат обратно в String для отображения в TextView

int val1 = Integer.parseInt(value);
int val2 = Integer.parseInt(value2);

answer.setText(String.valueOf(val1 + val2));
5

Чтобы получить целочисленное значение строки:

final int myResult = Integer.parseInt(myString1) + Integer.parseInt(myString2);

Затем вы можете выполнить добавление и сохранить результат в variale. Затем для отображения результата в виде строки:

answer.setText(Integer.toString(myIntResult));
4

Нарисуйте String дольше или что вам нужно

public void calNumbers(View view) {
    EditText text = (EditText)findViewById(R.id.edit_number1);
    String value = text.getText().toString();       

    EditText text2 = (EditText)findViewById(R.id.edit_number2);
    String value2 = text2.getText().toString();              

    TextView answer = (TextView) findViewById(R.id.answer);      
    long l1 = Long.parseLong(text);
    long l2 = Long.parseLong(text2);

    long result = l1 + l2;
    answer.setText(Long.toString(result));
}
  • 0
    Спасибо всем за помощь!
1

вы можете получить значение из вашего EditText разными способами, но если вы хотите сделать это, убедитесь, что в первую очередь убедитесь в этом. в макете XML вашего EditText убедитесь, что для параметра android:inputType установлено значение "number", "numberSigned" или "numberDecimal", чтобы пользователь не входил в наше приложение.

Теперь в классе java инициализируйте глобально аргументы вашего номера 0 в зависимости от вашего ожидаемого результата, либо integer (int) для сумм или подстрок между целыми числами (numberType number или numberSigned), либо более общий как двойной для всех операций.

Наконец, вам нужно проанализировать информацию, не получая ее как текстовую строку, потому что она включает в себя два ненужных преобразования.

public void wattSystemView(View view) {

/**
* decimal values entered in hor_editText and wh_editText
* number of days without sun of the system as a whole number at days_editText
*/

hours     = (EditText) findViewById(R.id.hor_editText);
wh        = (EditText) findViewById(R.id.wh_editText);
daysNoSun = (EditText) findViewById(R.id.nosun_days_editText);

/**
* conversion to double of the decimal values entered 
* conversion to integer of the number of days without sun of the system
*/
numh      = Double.parseDouble(hours.getText().toString());
numwh     = Double.parseDouble(wh.getText().toString());
nosundays = Integer.parseInt(daysNoSun.getText().toString());

    /**
    * simple math 
    */
    double wattDay = numh * numwh;
    double wattSys = wattDay*nosundays;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню