2013-04-18 75 views
0

我有一个排序方法,我想要计数移动的方法,但应计数的变量不计算任何东西,我只读0当我读它。Java变量不增加,停留在0

//En variabel för att man ska lagra info i den 
    //Tillfällig lagring. 
    int temp; 
    int forflyttningarBubble = 0; 
    int jamForElse = 0; 

    //Loopar, loopen är inte mer än storleken på arrayen 
    for(int i=0;i<allatal.length-1;i++) 
    { 
     //En till loop 
     for(int j=i+1;j<allatal.length;j++) 
     { 
      //Om talet peckaren pekar på större än det andra 
      //talet så ska programmet 
      jamForElse++; 
      if (allatal[i] > allatal[j]) 
      { 
       forflyttningarBubble++; 
       forflyttningarBubble++; 
       forflyttningarBubble++; 
       //Lagrar värdet array "i" i temp 
       temp = allatal[i]; 
       //Överför "j" till "i" 
       allatal[i] = allatal[j]; 
       //temp värdet överförs till "i" 
       allatal[j] = temp; 
       forflyttningarBubble++; 
      } 
     } 
    } 
    statistik BubbleData = new statistik(jamForElse, forflyttningarBubble, allatal); 
    return BubbleData;' 

这里是对象我使用

public class statistik { 
    public int jamForElse; 
    public int byten; 
    public int[] allatal; 

    public statistik(int jamForElse, int byten, int[] allatal) { 
     this.byten = byten; 
     this.allatal = allatal; 
     this.jamForElse = jamForElse; 
    } 
} 

当我尝试写值到一个文件中我得到“0”

//Starttid 
     long startTime = System.nanoTime(); 
     //Anropar metoden 
     statistik bubble = bubbleSort(allatal);   
     //sluttiden 
     long endTime = System.nanoTime(); 
     //för att få ett svar på tiden 
     long duration = endTime - startTime; 
     double seconds1 = (double)duration/1000000000.0; 

     //Gör en loop som är lika lång som arrayen 
     for(int k=0;k<bubble.allatal.length-1;k++){ 
      //Lagrar informationen i filen 
      out.println(bubble.allatal[k]); 
     } 
     //Lagrar tiden också i filen 
     out.println("BubbleSort (Nano): " + duration); 
     out.println("Antal Sekunder: " + seconds1); 
     out.println("Förflyttningar: " + bubble.byten); 
     out.println("Jämförelser: " + bubble.jamForElse + "\n\n"); 
     System.out.print(bubble.byten); // i get "0" 
+2

请勿使用瑞典语变量名称。尝试在代码中使用英语(字符串除外),甚至是评论。它看起来非常丑陋。在这里获得任何帮助将会更加困难。 – maba

+0

哪个变量不改变值? 'forflyttningarBubble'?你在哪里测试它? – maksimov

+0

再次点击查看,我添加了更多信息。谢谢@maksimov –

回答

0

答案在于代码

bubbleSort(allatal); 

它有一些缺陷在它。基本上,处理边缘附近的案件很少。一个零元素数组永远不会落入内部循环,也不会更新byten字段。一个元素的数组也会发生同样的情况。

您是否验证过输入以确保您有足够的元素进行排序?小输入(大小为零或1的数组)将通过它作为“已排序”,它们是;但是,他们不需要任何实际的操作。