gpt4 book ai didi

java - Android 冒泡排序不起作用

转载 作者:行者123 更新时间:2023-12-01 13:11:44 25 4
gpt4 key购买 nike

我是android编程新手,我尝试通过在一个EditText中输入数字来进行冒泡排序,排序后的数字将在第二个EditText上输出。单击“排序”按钮后,程序意外停止。请告诉我出了什么问题。

package com.example.sorting;

import android.os.Bundle;
import android.app.Activity;
import android.text.Spannable;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;


public class MainActivity extends Activity{

EditText enterNum;
EditText sortedNum;
Button sortNow;

int num[] = new int[5];
int i, n, j;
int temp;

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

enterNum = (EditText)findViewById(R.id.enterNum);
sortedNum = (EditText)findViewById(R.id.sortedNum);
sortNow = (Button)findViewById(R.id.sortNow);
sortNow.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v){
BubbleSort();}});

}


public void BubbleSort(){

Spannable spn=enterNum.getText();
num[5]=Integer.valueOf(spn.toString());

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


sortedNum.setText(String.valueOf(num[0])+String.valueOf(num[1])+String.valueOf(num[2])+String.valueOf(num[3])+String.valueOf(num[4]));


}

}

最佳答案

以下行应该为您提供 ArrayIndexOutOfBounds:

num[5]=Integer.valueOf(spn.toString());

因为你已经声明了,

int num[] = new int[5];

所以你的数组有五个元素,索引分别为 0,1,2,3,4
最高索引为4

更改为

num[4]=Integer.valueOf(spn.toString());

同时将以下循环中的 5 更改为 4,

for (i=0;i<4;i++){ 
for(j=i+1;j<4;j++){

建议:最好使用num.length,而不是使用4、5等绝对值

编辑:

public void BubbleSort() {

Spannable spn = enterNum.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 < spn.length(); i++){
result += num[i];
}
sortedNum.setText(result);

}

关于java - Android 冒泡排序不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22804760/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com