2016-01-12 107 views
0

所以Im做使用冒泡排序和compareTo方法一種方法計劃返回閃爍的光標

然而,由於某些原因,當我運行它編譯的程序,任何確實沒有錯誤,並顯示在程序中閃爍的光標(就好像你要輸入什麼東西;你可以,只要你按下輸入什麼都不會發生),並且這個光標保持閃爍。

這裏有什麼問題? (根據老師的指令代碼)

public static void sort(ArrayList al) 
{  
    Person p,p1,p2; 
    String a1,a2; 

    boolean flag = true; 

    System.out.println("Database will be sorted acc to ID "); 
    System.out.println(); 

    do 
    { 
     flag = false; 

     for (int i=0;i<al.size()-1;i++)  
     { 
      p = (Person)al.get(i); 

      a1=((Person)al.get(i)).personID; 
      a2=((Person)al.get(i+1)).personID; 

      if (a1.compareTo(a2) > 0){ 
       p1= (Person)al.get(i); 
       p2 =(Person)al.get(i+1);     
     } 
    } 
    } 
    while (flag = true); 

if (flag = false) 
    { 
     for (int i = 0; i < al.size(); i++) 
    { 
     p = (Person) al.get(i); 

     System.out.println("----------" + (i+1) + "-----------"); 

     System.out.println("ID Number: "+ p.personID); 
     System.out.println("Name: "+ p.name); 
     System.out.println("Day of Birth: " +p.dayDOB); 
     System.out.println("Month of Birth: " +p.monthDOB); 
     System.out.println("Year of Birth: " +p.yearDOB); 
     System.out.println("Telephone Number: " +p.telNum); 
     System.out.println(""); 
    } 
} 

回答

0

的問題是在這個循環:

do 
{ 
.... 
} 
while (flag = true); 

要比較flagtrue,即​​,而是你flagtrueflag = true。因此,循環不會退出,而是永遠運行(或直到您終止程序)。

您在以下if聲明中遇到了同樣的問題。