2013-12-09 106 views
0

一个随机数,我不能我的随机数进行排序的...冒泡排序在Java

输出均为零时请帮我...这是我的代码

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

     class BubbleSort{ 
     public static void main(String [] args){ 
    Random g = new Random(); 

    int [] number = new int [10]; 

    System.out.print("Random Numbers:"); 
    for (int d = 0 ; d<number.length ; d++){ 
     int RandomG = g.nextInt(100)+1; 
     System.out.print("\t" + RandomG); 
     } 

    System.out.print("\nSorted Numbers:"+Arrays.toString(BubbleSortAsceMethod(number))); 

        } 
    public static int [] BubbleSortAsceMethod(int[] x){ 
    int temp; 

    for(int i = 0 ; i < x.length-1 ; i++){ 
     for (int j = 1 ; j < x.length-1 ; j++){ 
      if (x[j-1] < x[j]){ 
       temp = x[j-1]; 
       x[j-1] = x[j]; 
       x[j] = temp; 
      } 

      } 
       } 
     return x; 
       } 
          } 

输出..

随机数:48 12 89 18 99 89 50 56 56 70

排序编号:[0,0,0,0,0,0,0,0,0,0] 过程完成。

+3

实际上,'number'是从来没有填充, –

回答

1

您从未将值分配给数组。

变化

for (int d = 0 ; d<number.length ; d++){ 
    int RandomG = g.nextInt(100)+1; 
    System.out.print("\t" + RandomG); 
} 

for (int d = 0 ; d<number.length ; d++){ 
    int RandomG = g.nextInt(100)+1; 
    System.out.print("\t" + RandomG); 
    number[d] = RandomG ; // See here Added this line. 
    } 
2

你的随机数从未填充。你简单地将它们打印出来给用户,但是你传递给你的冒泡排序是一个包含0的数组。因此输出。

int [] number = new int [10]; 

System.out.print("Random Numbers:"); 
for (int d = 0 ; d<number.length ; d++){ 
    int RandomG = g.nextInt(100)+1; 
    System.out.print("\t" + RandomG); 
    } 

应该

int [] number = new int [10]; 

System.out.print("Random Numbers:"); 
for (int d = 0 ; d<number.length ; d++){ 
    number[d] = g.nextInt(100)+1; 
} 
+0

恭喜克里斯:) –

0

您生成并打印的随机数,但从来没有把他们在数组中。

一般来说,你最好在填充后打印数组,而不是同时打印数组,因为这会立即显示出问题。

0

输出是全零'是因为您只是生成随机数,但不会将它们分配给名为number的随机数组(int [])。

看你的下面的代码,随机数不被分配给命名number

System.out.print("Random Numbers:"); 
for (int d = 0 ; d<number.length ; d++){ 
    int RandomG = g.nextInt(100)+1; 
    System.out.print("\t" + RandomG); 
} 

然后,你正在努力中的int []随机阵列number传递给方法BubbleSortAsceMethodINT []阵列。请注意,此时,随机数组包含默认值 - 零。

System.out.print("\nSorted Numbers:" 
      + Arrays.toString(BubbleSortAsceMethod(number))); 

你需要让喜欢

System.out.print("Random Numbers:"); 
    for (int d = 0; d < number.length; d++) { 
     int RandomG = g.nextInt(100) + 1; 
     System.out.print("\t" + RandomG); 
     number[d] = RandomG;//<=====Assign the random number to array 
    } 

此外一些变化,有一些错误,在方法BubbleSortAsceMethod的for循环,

你需要做以下变化使Bubble正确排序。

变化

for(int i = 0 ; i < x.length-1 ; i++){ 
    for (int j = 1 ; j < x.length-1 ; j++){ 
     if (x[j-1] < x[j]){ 
      temp = x[j-1]; 
      x[j-1] = x[j]; 
      x[j] = temp; 
     } 

     } 

for (int i = 0; i < x.length; i++) { 
     for (int j = 1; j < x.length -i; j++) { 
      if (x[j - 1] < x[j]) { 
       temp = x[j - 1]; 
       x[j - 1] = x[j]; 
       x[j] = temp; 
      } 

     } 
    }