在android studio中显示每个循环迭代输出

时间:2016-09-24 22:53:00

标签: java android android-studio append settext

我正在尝试通过按钮点击触发演示插入排序。显示输出中排序的所有步骤。

输入整数个位0-9。

有人可以帮我即兴创作我的代码! 非常感谢帮助。

O / p显示括号和coma,因为它是一个数组。 我可以在没有牙箍和昏迷的情况下获得o / p!? 而不是o / p [3,5,7,9]它应该像 - 3 5 7 9

    public void btnClickMe(View v) {
    Button button = (Button) findViewById(R.id.button);
    EditText et = (EditText) findViewById(R.id.editText);
    TextView tv = (TextView) findViewById(R.id.textView2);
    insertionSort();
}
public void insertionSort(){
    EditText et = (EditText) findViewById(R.id.editText);
    String text = et.getText().toString();
    String txt1 = text.replaceAll(","," ");
    String txt= txt1.replaceAll(" ","");
    int[] array = new int[txt.length()];
    for (int i = 0; i < txt.length(); i++){
        array[i] = Character.getNumericValue(txt.charAt(i));
    }
    TextView tv = (TextView) findViewById(R.id.textView2);
    tv.setText("Output:");
    for (int j = 1; j < array.length; j++){
        int key = array[j];
        int i = j - 1;
        while ((i > -1) && (array[i] > key)){
            array[i + 1] = array[i];
            i--;
        }
    }
    array[i + 1] = key;
    tv.append(Arrays.toString(array).replaceAll(",","")+"\n");
}

我可能要求太多,但我正在努力学习android,你的帮助会教会我很多新东西。提前谢谢。

1 个答案:

答案 0 :(得分:0)

首先,您的插入算法存在缺陷。 其次,您需要在每次附加之前重置TextView的文字。

int[] array = {6, 4, 3, 2};
// TextView tv = (TextView) findViewById(R.id.textView2);
// Resets the text to be blank.
// tv.setText("");

for (int i = 1; i < array.length; ++i) {
    int j = i;
    while (j > 0 && array[j - 1] > array[j]) {
        int temp = array[j];
        array[j] = array[j - 1];
        array[j - 1] = temp;
        --j;
    }
    System.out.println(Arrays.toString(array));
    // i.e. [4, 6, 3, 2]
    // tv.append(Arrays.toString(array) + "\n");
}