2015-11-18 71 views
0

我一直在研究这个代码大约一周;我正在尝试创建一个生成随机数的程序,然后使用Bubble方法对它们进行排序,但我收到了这条消息“Bubble Sort:[I @ ad3ba4”。有人看到有什么问题,我觉得这很简单,但我找不到问题。Bubble排序错误输出

import java.util.Random; 
public class sortLibrary { 
    private static void bubbleSort(int[] list) { 
     int n = list.length; 
     int temp = 0; 
     for (int i = 0; i < n; i++) { 
      for (int j = 1; j < (n - 1); j++) { 
       if (list[j - 1] > list[j - 1]) { 
        temp = list[j - 1]; 
        list[j - 1] = list[j]; 
        list[j] = temp; 
       } 
      } 
     } 
     System.out.println("\nBubble Sort: " + list); 
    } 
    public static void main(String args[]) { 
     System.out.println("Unsorted list:"); 
     Random numbers = new Random(); 
     int list[] = new int[20]; 
     for (int i = 0; i < 20; i++) { 
      list[i] = numbers.nextInt(100); 
     } 
     for (int i = 0; i < 20; i++) { 
      System.out.print(list[i] + " "); 
     } 
     bubbleSort(list); 
    } 
} 
+1

使用'Arrays.toString(list)'打印数组。 –

+1

@YassinHajaj你刚刚击败了我!我刚刚在我的回答中发布了这个消息,然后看到这个= P –

+1

@Jonathan最后,你得到了代表:)。大声笑 –

回答

0

你实际上是打印出列表的内存地址是否与

System.out.println("\nBubble Sort: "+list); 

你很可能会在列表中要循环并打印出值。就像:

System.out.print("\nBubble Sort: "); 
for(int i = 0; i < list.length; i++){ 
    System.out.print(list[i] + " "); 
} 

我希望这有助于。

+0

使用'for ... in'循环会更容易。只是说。 –

3

你不能简单地打印一个列表println()。这只适用于字符串。

取而代之,将println()中的list替换为Arrays.toString(list),将该数组转换为打印字符串。


或者,您可以将其打印出来,类似于@ KyleGowen的答案。这里有一个方法来遍历Java中更容易数组中的另一种形式:

String arrayToString = ""; 
for(int item : list) { 
    arrayToString += item + ", "; 
} 
System.out.println("Bubble sort: [" + arrayToString.substring(0, arrayToString.length()-2) + "]"); 

这也应该打印好听。

看到这两个在TutorialPoint's online Java compiler

1

现在,您不能像这样在java中打印Array。如果你想打印所有的数组,你需要使用索引或使用这样的:

System.out.println("\nBubble Sort: " + Arrays.toString(list)); 

另外在你的if语句你有list[j - 1] > list[j-1]。我认为会有list[j - 1] > list[j]。因此,您的代码如下所示:

import java.util.Arrays; 
import java.util.Random; 

public class bubble { 

    private static void bubbleSort(int[] list) { 
     int n = list.length; 
     int temp = 0; 
     for (int i = 0; i < n; i++) { 
      for (int j = 1; j < (n - 1); j++) { 

       if (list[j - 1] > list[j]) { 
        temp = list[j - 1]; 
        list[j - 1] = list[j]; 
        list[j] = temp; 
       } 
      } 
     } 
     System.out.println("\nBubble Sort: " + Arrays.toString(list)); 
    } 

    public static void main(String args[]) { 
     System.out.println("Unsorted list:"); 
     Random numbers = new Random(); 
     int list[] = new int[20]; 
     for (int i = 0; i < 20; i++) { 
      list[i] = numbers.nextInt(100); 
     } 
     for (int i = 0; i < 20; i++) { 
      System.out.print(list[i] + " "); 
     } 

     bubbleSort(list); 

    } 
}