2

我正在尝试创建一个数组,其“总”数量在最小值和最大值之间。然后,使用冒泡排序对它们进行排序。当我执行时,我得到全零。有人能找出问题所在吗?及时回复将不胜感激。

import java.util.*;
import java.util.Random;

public class final_project 
{ 
    public static void main(String[] args) 
    { 
        int numbers[]; 
        int i, min, max, total; 
        int num;
        Scanner scan = new Scanner(System.in);

        System.out.println("Please enter a minimum random value");
        min = scan.nextInt();
        System.out.println("Please enter a maximum random value");
        max = scan.nextInt();
        System.out.println("Please enter the amount of random numbers");
        total = scan.nextInt();

        numbers = new int[total];


        i = 0;
        total = 0;
        while ( i < total )
        {
            num = min + (int)(Math.random()*max);;
            numbers[i] = num;  
            total += num; 

            i += 1; /* i = i + 1; */
        }


        bubbleSort(numbers, numbers.length); 
        System.out.println("Your Sorted Array Is: "); 
        for(i=0; i<numbers.length; i++) 
        { 
            System.out.print(numbers[i] + " "); 
        } 

    }



    private static void bubbleSort(int[] numbers, int length) 
    { 
        int temp, counter, index; 

        for(counter=0; counter<length-1; counter++) 
        { 
            for(index=0; index<length-1-counter; index++) 
            { 
                if(numbers[index] > numbers[index+1]) 
                { 
                    temp = numbers[index]; 
                    numbers[index] = numbers[index+1]; 
                    numbers[index+1] = temp; 
                } 
            } 
        } 
    } 
}
4

3 回答 3

0

您的循环不执行:

        i = 0;
        total = 0;
        while ( i < total )
            ...

你也不想增加total. 将循环替换为:

        for(int i = 0; i < numbers.length; ++i)
        {
             numbers[i] = num;  
        }
于 2011-12-10T04:33:48.517 回答
0

您应该考虑使用 for 循环而不是 while 循环。for 循环非常适合遍历数组。

于 2011-12-10T04:36:16.137 回答
0

改变

while ( i < total )

while ( i < numbers.length )
于 2011-12-10T04:38:22.297 回答