Как получить длину целого числа в Java (Android)
Таким образом, если бы у меня было значение 1234, выход должен быть 4.
Я написал следующий код, но не знаю, что я сделал не так. Это приложение, которое добавляет два номера. Итак, у меня есть два поля EditText. Но если поле EditText оставить пустым, приложение вылетает. Поэтому я подумал о назначении значения 0 для поля EditText, которое оставлено пустым, потому что оно (должно) иметь длину символа 0.
Это должно получить правильные результаты:
Пример, если поле EditText "firstnumET" содержит значение 5, а поле "secondnumET" оставлено пустым:
5 + 0 = 5
Проблема может быть
private int firstnum;
private int secondnum;
private int total;
EditText firstnumET;
EditText secondnumET;
TextView ansTV;
Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_cal2_numbers);
firstnumET = (EditText) findViewById(R.id.edittxt1);
secondnumET = (EditText) findViewById(R.id.edittxt2);
ansTV = (TextView) findViewById(R.id.ans);
button = (Button) findViewById(R.id.btn);
button.setOnClickListener(new ClickButton());
}
private class ClickButton implements Button.OnClickListener {
@Override
public void onClick(View v) {
firstnum = Integer.parseInt(firstnumET.getText().toString());
secondnum = Integer.parseInt(secondnumET.getText().toString());
int cache1 = Integer.toString(firstnum).length();
int cache2 = Integer.toString(secondnum).length();
if (cache1 == 0) {
ansTV.setText(Integer.toString(secondnum));
}
if (cache2 == 0) {
ansTV.setText(Integer.toString(firstnum));
}
total = firstnum + secondnum;
ansTV.setText(Integer.toString(total));
}
}
2 ответа
Слишком долго для комментария, почему бы вам не проверить свои строки, а затем установить их на основе их длины, если они не пусты.
String firstString = firstnumET.getText().toString();
firstNum = (firstString.trim().equals(""))? 0: firstString.length();
String secondString = secondnumET.getText().toString();
secondNum = (secondString.trim().equals(""))? 0: secondString.length();
ansTV.setText(Integer.toString(firstNum + secondNum));
Очевидно, вы могли бы сделать его более сложным, проверив, чтобы строка содержала только числовые значения, чтобы убедиться, что вы не получаете длину нечисловой строки.
String.trim удаляет пробелы, это помогает избежать редактирования текста, заполненного пробелами.
Ваша проблема здесь:
secondnum = Integer.parseInt(secondnumET.getText().toString());
Если это поле оставить пустым, secondnumET.getText(). ToString() вернет ноль.
Вот лучший способ выполнить то, что вы пытаетесь.
public void onClick(View v) {
String firstnum = firstnumET.getText().toString();
String secondnum = secondnumET.getText().toString();
int cache1 = firstnum.equals("") ? 0 : Integer.parseInt(firstnum);
int cache2 = secondnum.equals("") ? 0 : Integer.parseInt(secondnum);
total = firstnum + secondnum;
ansTV.setText(Integer.toString(total).length()); // set the answer to the length of total
ansTV.setText(Integer.toString(total)); // set the answer to total
}