【问题标题】:not working sort for two characters integer value (for digits that are 10 or more)不能对两个字符整数值进行排序(对于 10 位或更多位的数字)
【发布时间】:2017-04-06 07:06:30
【问题描述】:

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

  }
}

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

【问题讨论】:

  • 有任何理由以可能最糟糕的方式手动排序而不是使用 Collection.sort()?
  • spn.charAt(i) 返回单个字符。您需要查看split()
  • split() 表示“无法解析方法 split()”。我可以知道为什么我得到了反对票吗?我在任何地方都没有找到我的解决方案,这就是为什么我在这里发布我的问题。它不是link 的副本。如果可以的话,请帮助我。谢谢@KenY-N
  • spn.toString().split();您需要将Spannable(具有CharSequence 接口)转换为String
  • stackoverflow.com/questions/43238912/… 的可能副本。由同一用户询问

标签: java android sorting


【解决方案1】:

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

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

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

顺便说一句,Java 的排序方式是使用Array.sort(num);,但我很欣赏你正在学习,所以明确地这样做很有用。此外,插入排序几乎总是比冒泡排序好。

【讨论】:

  • 我不知道该怎么感谢你..这真的很完美..非常感谢@Ken YN..非常感谢 Stackoverflow..这太棒了..我保证我永远不会停止学习编程。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多