Быстрый переменный вопрос - PullRequest
0 голосов
/ 16 апреля 2011

У меня на экране есть объект EditText (et_travel), который запрашивает пройденные мили.Я получаю эти данные следующим образом:

        float travel = Float.parseFloat(et_travel.getText().toString());
            if(travel > 40000){

Я просто обнаруживаю, что если кто-то помещает 40000 в EditText, все работает нормально, но если они ставят 40000 (добавляя запятую к числу), я вынужден закрытьthe float travel = ... оператор.

Как я могу оценить число без проблем с пользователем, добавившим запятую?

Ответы [ 3 ]

0 голосов
/ 16 апреля 2011

Выезд inputType для ограничения ввода пользователя

android:inputType="number"
0 голосов
/ 16 апреля 2011

Это на Java?Похоже, но мне интересно, ошибаюсь ли я.В любом случае, я бы посоветовал вам удалить из строки все символы, которые не являются числовыми.Для этого можно использовать регулярное выражение.

В Java это можно сделать следующим образом:

String input = et_travel.getText().toString();
input = input.replaceAll("[^0-9]", "");
float travel = Float.parseFloat(input);
...

Таким образом вы удаляете все, что не являетсясначала числовое значение из строки, а затем попытайтесь выполнить свою работу.Очевидно, сделайте некоторую проверку ошибок перед этим (например, ввод не равен нулю и тому подобное). Однако одно изменение, которое необходимо , заключается в том, что вам может потребоваться сохранить ".символ (если вам даны нецелые значения).Для этого потребуется немного изменить первое регулярное выражение.

Проверьте здесь: http://download.oracle.com/javase/1.5.0/docs/api/java/lang/String.html#replaceAll(java.lang.String, java.lang.String)

0 голосов
/ 16 апреля 2011

Что вам нужно, это некоторая проверка на входе.Перед преобразованием строки в число с плавающей точкой разберите строку.Если есть какие-либо ', то удалите их.Если есть только мусор, то отклоните ввод, иначе кто-то может вставить слово или что-то еще во ввод и вызвать хаос в вашей программе.

...