2016-01-12 64 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声明中遇到了同样的问题。