我必須在同一個數組中分隔0和1。我寫了邏輯,但沒有得到正確的輸出。你能檢查一下代碼嗎?讓我知道什麼是錯誤。如何調試不按預期工作的switch語句?
package Segregate;
public class Segregate {
public void segregate0and1(int arr[], int arr_size){
int i=0;
int j=arr_size-1;
while(j>=i){
switch(arr[i]){
case 0:{
i++;
}
case 1: {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
j--;
}
}
}
}
public static void main(String[] args) {
Segregate seg = new Segregate();
int arr[] = {0, 1, 0, 1, 0,0,1};
int arr_size = arr.length;
seg.segregate0and1(arr, arr_size);
System.out.print("Array after segregation is ");
for (int k = 0; k < arr_size; k++){
System.out.print(arr[k] + " ");
}
}
}
您在第一種情況下缺少中斷 - https://docs.oracle.com/javase/tutorial/java/nutsandbolts/switch.html –
這與http://stackoverflow.com/questions/類似31193334/array-containing-only-0-1-and-2/31204057#31204057 –
如果'switch'語句沒有按預期工作,請確保包含'default:'-label (最好有一些調試動作)。 – greybeard