Вывести наибольшее число из заданных цифр - PullRequest
0 голосов
/ 27 июня 2018

Мой вопрос похож на этот , но в андроиде. Я пытаюсь получить ввод из EditText, чтобы отобразить окончательный результат в TextView по нажатию кнопки.

У меня проблемы с адаптацией трех ответов, которые, по словам ОП, работают.

Как я могу получить значение из TextView, а затем отобразить результат в TextView?

Кажется, что работает приведенный ниже подход, но вывод 000, я думаю, потому что я ничего не хранится в arrayList

input = (Edittext)findViewById(R.id.et_input);
output = (TextView)findViewById(R.id.tv_output);
    ArrayList<Integer> myList = new ArrayList<Integer>();
            Scanner val = new Scanner(System.in); //can't figure out how to get user input from editText
            int x = 0;
            for (int i = 0; i < 3; i++) {
                x = val.nextInt();
                myList.add(x);
            }
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                myList.sort(null);
            }

            for (int i = myList.size() - 1; i >= 0; i--) {
                answer += myList.get(i).toString();
            }


            send.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    output.setText(answer);
                }
            });

Ответы [ 2 ]

0 голосов
/ 27 июня 2018

Это сделает свое дело

Добавьте свои номера в EditText, разделяя каждую цифру на "" (пробел)

    send.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String[] digits = input.getText().toString().split(" ");
            ArrayList<Integer> digitArray = new ArrayList<>();
            for (String digit : digits) {
                if (TextUtils.isDigitsOnly(digit))
                    digitArray.add(Integer.parseInt(digit));
            }
            Collections.sort(digitArray);
            StringBuilder largestPossibleNumber = new StringBuilder();
            for (int i = digitArray.size(); i > 0; i--) {
                largestPossibleNumber.append(digitArray.get(i - 1));
            }
            output.setText(largestPossibleNumber.toString());
        }
    });

не нужно

ArrayList<Integer> myList = new ArrayList<Integer>();
        Scanner val = new Scanner(System.in); //can't figure out how to get user input from editText
        int x = 0;
        for (int i = 0; i < 3; i++) {
            x = val.nextInt();
            myList.add(x);
        }
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            myList.sort(null);
        }

        for (int i = myList.size() - 1; i >= 0; i--) {
            answer += myList.get(i).toString();
        }

UPDATE Если вы не хотите использовать какой-либо разделитель, используйте следующий код

        send.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String enteredText = input.getText().toString();
            ArrayList<Integer> digitArray = new ArrayList<>();
            for(int i = 0 ; i< enteredText.length(); i++) {
                if (TextUtils.isDigitsOnly(String.valueOf(enteredText.charAt(i))))
                    digitArray.add(Integer.parseInt(String.valueOf(enteredText.charAt(i))));
            }
            Collections.sort(digitArray);
            StringBuilder largestPossibleNumber = new StringBuilder();
            for (int i = digitArray.size(); i > 0; i--) {
                largestPossibleNumber.append(digitArray.get(i - 1));
            }
            output.setText(largestPossibleNumber.toString());
        }
    });
0 голосов
/ 27 июня 2018

Возможно, вы могли бы сделать что-то вроде этого:

@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    // use textview to display the result
    output = (TextView)findViewByIf(R.id.textview1);
    // use a button to activate sorting once you have the edittexts filled
    sortNumbersButton = (Button)findViewById(R.id.button);
    // use EditText(s) to get values from user
    input = (EditText)findViewById(R.id.edittext1);
    // set a listener for a button so that we can activate sorting
    sortNumbersButton.setOnClickListener(
        new View.OnClickListener()
        {
            public void onClick(View view)
            {
                // use a string array to store string values from input
                string[] strings = input.getText().toString().split(" ");
                // use the editText getText() method to pull values from UI
                int[] intArray = new int[] {Integer.parseInt(strings[0]),
                    Integer.parseInt(strings[1]),
                    Integer.parseInt(strings[2])};
                // sort the values in the array in ascending order
                Arrays.sort(intArray);
                // use stringbuilder to append string values for output
                StringBuilder sb = new StringBuilder();
                // loop backwards since it sorts in ascending order
                for (int i = 2; i > -1; i--) {
                    sb.append(intArray[i]);
                }
                // set the textview value of the sorted integers! and done
                output.setText(sb.toString());
            }
        });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...