我无法对随机数进行排序......
输出全为零请帮助我......这是我的代码
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] 流程已完成。
答案 0 :(得分: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;
}
答案 1 :(得分: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)
您生成并打印随机数,但从不将它们放入数组中。
一般来说,最好在填充后再打印阵列,而不是同时进行,因为这会立即显示问题。
答案 3 :(得分:0)
输出全为零'是因为您只生成随机数,但不将它们分配给名为number
的随机数数组(int [])。
请参阅下面的代码,随机数未分配给名为number
的 int [] 数组
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
传递给方法BubbleSortAsceMethod
。注意,此时,随机数组包含默认值 - 零'。
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循环存在一些错误,
您需要进行以下更改才能正确排序冒充。
更改
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;
}
}
}
答案 4 :(得分:0)
以下代码完美无缺:您可以撤消&gt;中的符号到&lt;在代码中获得降序。
import java.util.*;
public class ArrayClassSort {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.println("Total numbers :");
int n = s.nextInt();
double a[] = new double[n];
for (int i = 0; i < a.length; i++) {
a[i] = Math.random();
System.out.println("Random generated total numbers are: " + a[i]);
}
System.out.println("\n Sorted Numbers are: " + Arrays.toString(BubbleSortDesc(a)));
}
private static double[] BubbleSortDesc(double[] a) {
for (int i = 0; i < a.length - 1; i++) {
for (int j = 1; j < a.length - i; j++) {
if (a[j - 1] > a[j]) {
double temp = a[j - 1];
a[j - 1] = a[j];
a[j] = temp;
}
}
}
return a;
}
}
&#13;