2017-04-05 31 views
0

我是android编程的新手,我尝试通过在一个EditText中输入数字来进行气泡排序,并将排序后的数字输出到textview上。一旦我点击输入按钮,程序意外停止。请“告诉我什么是错的”谢谢。气泡排序应用程序与android工作室中的用户输入

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

    } 
} 
+0

“告诉我什么是错的”。添加堆栈跟踪。没有人可以帮助你,如果没有堆栈跟踪,确切地告诉你什么是错的 – Zoe

+0

@sam我更新了我的答案尝试 –

回答

-1

Spannable spn = Input.getText().toString;

和你泡SOT逻辑也是错误的,正确的 一个是这样的

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; 
      } 
     } 
    } 
0

你没有初始化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); 

} 
+0

对不起,没有完美的工作..它只适用于数字0-9..and当我使用空间和输入像“5 4 9 10 15 3”它为每个空间输出一个0 .. – sam

+0

你以前的答案是正确的..但那只是0到9 ..我怎么能排序比数字更大9.请帮助 – sam