2011-12-10 11 views
2

minとmaxの間に '合計'数の配列を作成しようとしています。そして、バブルソートを使用してソートします。私が実行すると、私はすべてゼロを取得します。誰かが間違っていることを見つけることができますか?速やかな返答をいただければ幸いです。JavaでBubbleSortを使用した配列の並べ替えでエラーが発生しました

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; 
       } 
      } 
     } 
    } 
} 
+0

にあなたは未ソート配列を印刷してみましたか?結果は正しいか? – dasblinkenlight

+1

は 'num = min +(int)(Math.random(max-min));' '総計= 0 'を削除する必要があります – st0le

答えて

0

変更

while (i < total) 

while (i < numbers.length) 
+0

ありがとうございます。なぜ単純なエラーをキャッチできないのか分かりません。あなたは神様です。 – user1090844

+0

喜んで:) –

0

あなたのループは実行されません:

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

また、あなたはtotalをインクリメントする必要はありません。ループを次のように置き換えてください:

 for(int i = 0; i < numbers.length; ++i) 
     { 
      numbers[i] = num; 
     } 
+0

これは実行方法を教えてください。 – user1090844

0

whileループの代わりにforループを使用することを検討してください。 forループは、配列を反復処理するのに最適です。

関連する問題