2017-11-18 75 views
-2

這裏是我的教練問題:我的java程序不工作,我跑了代碼和排序是不正確的

  1. 加載數據的下列物品進入從鍵盤交互的數組。
  2. 按照輸入順序打印數據。
  3. 使用選擇排序以升序對數據進行排序。
  4. 按排序順序打印數據。
  5. 使用冒泡排序以降序對數據進行排序。
  6. 按排序順序打印數據。

這些數據項,您將使用: 本田,雪佛蘭,福特,勞斯萊斯,奔馳

import java.util.Scanner; 

public class Example532 { 

    public static void main(String[] args) { 
     Scanner scan = new Scanner(System.in); 

     String[] list = new String[5]; 
     System.out.println("Enter data: "); 
     for (int i=0; i<5; i++) { 
      list[i] = scan.nextLine(); 
     } 

     System.out.println("Current data:"); 
     for (int i=0; i<5; i++) { 
      System.out.println(list[i]); 
     } 
     // call selection sort 
     doSelectionSort(list); 
     // print out current array 
     System.out.println("Sorted data:"); 
     for (int i=0; i<5; i++) { 
      System.out.println(list[i]); 
     } 
     // call bubble sort 
     doBubbleSort(list); 
     System.out.println("Bubble Sorted data:"); 
     for (int i = 0; i < 5; i++) { 
      System.out.println(list[i]); 
     }   

    } 

    public static String[] doSelectionSort(String[] arr){ 
     for (int i = 0; i < arr.length - 1; i++) 
     { 
      int index = i; 
      for (int j = i + 1; j < arr.length; j++) 
       if (arr[j].compareTo(arr[index]) < 0) 
        index = j; 

      String smaller = arr[index]; 
      arr[index] = arr[i]; 
      arr[i] = smaller; 
     } 
     return arr; 
    }  

    public static void doBubbleSort(String[] arr) { 
     boolean swapped = true; 
     int j = 0; 
     String tmp; 
     while (swapped) { 
      swapped = false; 
      j++; 
      for (int i = 0; i < arr.length - j; i++) { 
       if (arr[i].compareTo(arr[i + 1]) < 0) { 
        tmp = arr[i]; 
        arr[i] = arr[i + 1]; 
        arr[i + 1] = tmp; 
        swapped = true; 
       } 
      } 
     } 
    }   
} 
+0

首先,什麼是你想通過吃'for'循環的括號來實現?這不是很好的編碼習慣。 – Ravi

+0

當我運行這個,它的工作。你碰到什麼(確切)問題? – Stefan

+0

它沒有按正確順序排序 –

回答

0

要按長度排序,而不是

if (arr[j].compareTo(arr[index]) < 0) 

用途:

if (arr[j].length() < arr[index].length()) 

(你需要做的在多個地方此更新。)

+0

任何可能的方式,你可以重寫代碼? –

+0

我們正在談論兩行代碼。一個我爲你做的,所以它基本上是複製/粘貼。另一個也很容易。你能行的! :) – Stefan

+0

大聲笑,我得到了第一個工作,但我仍然掙扎與第二個,也許會導致其凌晨3點 –

相關問題