所以我正在使用冒泡排序和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 :(得分:0)
问题出现在这个循环中:
do
{
....
}
while (flag = true);
您希望将flag
与true
进行比较,即flag == true
,而是将 flag
设置为true
{ {1}}。因此,循环不会退出,而是永远运行(或直到您终止程序)。
您在以下flag = true
声明中遇到同样的问题。