Как получить ближайшие двойные значения из ArrayList в Android - PullRequest
0 голосов
/ 04 мая 2020

У меня есть список двойных значений с именем valuelist. У меня есть текст редактирования и кнопка. Когда я нажимаю кнопку, он показывает ближайшее двойное значение edittext из valuelist. Как это сделать? Кстати, я новичок в разработке приложений и не знаю, какой метод использовать: (

И мои коды: -

List<Double> list = new ArrayList<Double>();
    list.add(1.38);
    list.add(2.56);
    list.add(4.3);

EditText input = (EditText)findViewById(R.id.etinput);
Button convert = (Button)findViewById(R.id.btconvert);
TextView result = (TextView)findViewById(R.id.tvresult);

double ivalue = String.valueOf(result.getText());

, поэтому, если ivalue равен 2,5, тогда, когда я нажимаю кнопку, он установит результат в 2,56, так как это ближайшее двойное значение списка массивов. Заранее спасибо.

1 Ответ

0 голосов
/ 04 мая 2020

Можно выполнить итерацию по списку и получить разницу между значением EditText и текущим элементом списка, а наименьшее значение разницы приведет к ближайшему элементу к значению EditText.

List<Double> list = new ArrayList<Double>();
list.add(1.38);
list.add(2.56);
list.add(4.3);

EditText input = (EditText) findViewById(R.id.etinput);
Button convert = (Button) findViewById(R.id.btconvert);
TextView result = (TextView) findViewById(R.id.tvresult);


convert.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        double ivalue = Double.parseDouble(input.getText().toString());
        double difference = Double.MAX_VALUE;
        double nearstItem = Double.MAX_VALUE;
        for (double item : list) {
            if (difference > Math.abs(ivalue - item)) {
                difference = Math.abs(ivalue - item);
                nearstItem = item;
            }
        }

        result.setText(String.valueOf(nearstItem));

    }
});

Убедитесь, что обрабатывает не двойные входные значения для EditText

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...