程序返回闪烁光标

时间:2016-01-12 16:52:10

标签: bubble-sort bluej compareto

所以我正在使用冒泡排序和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("");
    }
}

1 个答案:

答案 0 :(得分:0)

问题出现在这个循环中:

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

您希望将flagtrue进行比较,即flag == true,而是 flag设置为true { {1}}。因此,循环不会退出,而是永远运行(或直到您终止程序)。

您在以下flag = true声明中遇到同样的问题。