Java 不适用于两个字符整数值的排序(对于10或更多的数字)

Java 不适用于两个字符整数值的排序(对于10或更多的数字),java,android,sorting,Java,Android,Sorting,我是android编程新手。我尝试构建一个冒泡排序模拟应用程序,在其中输入整数(单字符或双字符)并获得排序数字的输出。在这里,通过搜索/研究和其他人的帮助,我构建了这段代码 public class Simulation extends AppCompatActivity { TextView Result; EditText Input; Button ASButton; int i,j,temp,num[]; @Override protected void onCreate(Bund

我是android编程新手。我尝试构建一个冒泡排序模拟应用程序,在其中输入整数(单字符或双字符)并获得排序数字的输出。在这里,通过搜索/研究和其他人的帮助,我构建了这段代码

public class Simulation 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();

    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);

  }
}
公共类模拟扩展了AppCompative活动{
文本视图结果;
编辑文本输入;
按钮作为按钮;
int i,j,temp,num[];
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ASButton=(Button)findviewbyd(R.id.Button);
输入=(EditText)findViewById(R.id.EditText);
结果=(TextView)findViewById(R.id.textView2);
ASButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
泡泡运动();
}
});
}
public void BubbleSort(){
Spannable spn=Input.getText();
num=新整数[spn.length()];
整数计数=0;
对于(int i=0;inum[j]){
temp=num[i];
num[i]=num[j];
num[j]=温度;
}
}
}
字符串结果=”;
for(int i=0;i

在这段代码中,我得到了单个字符(0到9)的结果。但它不适用于两个或更多字符(10个或更多)。当我使用“空格”来分隔整数时,它会显示一些结果错误的“0”。请告诉我如何解决这个问题。谢谢。

问题是你在按角色工作;你需要使用字符串

首先,假设您的输入如下所示:

10 3 5 20 9999
所需的步骤是:转换为字符串,将字符串拆分为数字子字符串,然后将字符串转换为整数。代码(在没有编译器的情况下键入)的外观如下:

String inputText = Input.getText().toString();

String[] numberStrings = inputText.split(" ");

num = new int[numberStrings.length()];
for (int i = 0; i < numberStrings.length(); i++){
    num[i] = Integer.parseInt(numberStrings[i]);
}
String inputText=Input.getText().toString();
字符串[]numberString=inputText.split(“”);
num=newint[numberStrings.length()];
对于(int i=0;i

顺便说一下,Java排序的方法是使用
Array.sort(num),但我很感激您正在学习,因此显式地进行学习非常有用。此外,插入排序几乎总是比冒泡排序好。

手动排序的任何原因都可能是最糟糕的方式,而不是使用集合.Sort()
spn.charAt(i)
返回单个字符。您需要改为查看。split()表示“无法解析方法split()”。我可以知道为什么我投了反对票吗?我还没有找到我的解决方案,这就是为什么我把我的问题贴在这里。而且它不是复制品。如果可以,请帮助我。谢谢@KenY-N
spn.toString().split()
;您需要将
Spannable
(具有
CharSequence
接口)转换为
字符串
的可能副本。被同一位用户问到,我不知道该如何感谢你……这真的很好……非常感谢@Ken Y-N……非常感谢Stackoverflow……这太棒了……我保证我永远不会停止学习编程。非常感谢。