我需要对生成的随机数进行排序,并将它们添加到第二个editText2中

时间:2015-08-20 21:10:37

标签: java android

package com.example.sai.generatinrandomnumbers;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Random;

//我需要对生成的随机数进行排序并将它们添加到我的应用程序中的第二个editText2我尝试使用集合但我无法弄清楚PLZ帮助我并且我在下面附加我的代码。我应该再使用一个arraylist吗?

public class MainActivity extends AppCompatActivity {
    EditText editText, editText2;
    Button button, button2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        editText = (EditText) findViewById(R.id.editText);
        editText.setEnabled(false);

        editText2 = (EditText) findViewById(R.id.editText2);
        editText2.setEnabled(false);

        button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Random r = new Random();
                ArrayList<Integer> num = new ArrayList<Integer>();
                for (int i = 0; i < 6; i++) {
                    int answer = r.nextInt(10) + 1;
                    num.add(answer);
                    editText.setText(String.valueOf(num));
                }
            }
        });
    }
}

1 个答案:

答案 0 :(得分:4)

您需要将所有整数读入数据结构中,然后将它们打印回来排序到第二个EditText小部件。好吧,让我们这样做:

button = (Button) findViewById(R.id.button);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Random r = new Random();
            ArrayList<Integer> num = getRandomNums(6);
            editText.setText(getStringNum(num));

            Collections.sort(num);
            editText2.setText(getStringNum(num));
    });



private List<Integer> getRandomNums(final int theNumDigits) {
    Random r = new Random();
    ArrayList<Integer> num = new ArrayList<>();
    for (int i = 0; i < theNumDigits; i++) {
        int answer = r.nextInt(10) + 1;
        num.add(answer);
        }

     return num;
 }

 private String getStringNum(final List<Integer> theNumbers) {
       StringBuilder sb = new StringBuilder();
       for (int i = 0; i < theNumbers.size(); i++) {
           sb.append(num.get(i));
         }

        String toReturn = sb.toString();
        sb.setLength(0);
        return toReturn;

 }

我为您重新格式化了代码,以帮助您准确了解正在发生的事情。您将获取所有随机生成的数字并将它们添加到ArrayList中。然后使用StringBuilder创建一个String 每次循环迭代时,你都会在EditText中覆盖先前设置的值

然后你调用Collections.sort()并重新做一遍。