簡體   English   中英

在Android Studio中使用用戶輸入進行氣泡排序應用

[英]bubble sort app with user input in android studio

我是android編程的新手,我嘗試通過在一個EditText中輸入數字來進行冒泡排序,然后將排序后的數字輸出到textview上。 單擊輸入按鈕后,程序意外停止。 請“告訴我什么地方出了問題”謝謝。

public class MainActivity extends AppCompatActivity {

TextView Result;
EditText Input;
Button ASButton;

int i,j,temp,num[];

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

    ASButton = (Button) findViewById(R.id.button);
    Input = (EditText) findViewById(R.id.editText);
    Result = (TextView) findViewById(R.id.textView2);

    ASButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            BubbleSort();
        }
    });
}

public void BubbleSort() {

    Spannable spn = Input.getText();
    for (int i = 0; i < spn.length(); i++){
        num[i] = Integer.parseInt(""+spn.charAt(i));
    }

    for (i = 0; i < num.length; i++) {
        for (j = i + 1; j < num.length; j++) {
            if (num[i] > num[j]) {
                temp = num[i];
                num[i] = num[j];
                num[j] = temp;
            }
        }
    }

    String result = "";
    for (int i = 0; i < num.length; i++){
        result += num[i] + " ";
    }
    Result.setText(result);

  }
}

您沒有初始化num。 使用以下代碼

public void BubbleSort() {
    Spannable spn = Input.getText();

    num = new int[spn.length()];
    int count = 0;
    for (int i = 0; i < spn.length(); i++){
        if((spn.charAt(i)+"").matches(".*\\d.*")){

            num[i] = Integer.parseInt(""+spn.charAt(i));
            count++;
        }
    }

    for (i = 0; i < count; i++) {
        for (j = i + 1; j < count; j++) {
            if (num[i] > num[j]) {
                temp = num[i];
                num[i] = num[j];
                num[j] = temp;
            }
        }
    }

    String result = "";
    for (int i = 0; i < num.length; i++){
        result += num[i] + " ";
    }
    Result.setText(result);

}

Spannable spn = Input.getText().toString;

而且你的泡泡so邏輯也錯了,正確的是這樣的

    int temp = 0;  
              for (i = 0; i < num.length-1; i++) {
             for (j = 0; j < num.length-1; j++) {
                       if (num[j] > num[j+1]) {
                       temp = num[j];
                       num[j] = num[j+1];
                      num[j+1] = temp;
            }
       }
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM