为什么它会进入无限循环

Why it is going in infinite loop

在这里, 我想做的是 如果给定的用户 ID 已经存在,那么它应该清除所有字段。 并重新启动该页面....

private void uuserActionPerformed(java.awt.event.ActionEvent evt) {
    MongoClient mClient;
    DB mDB;
    DBCollection valCollection;
    Cursor cursor;

    try {
        mClient = new MongoClient(ip, port);

        System.out.println("Connected to mongodb instance at " + ip + ":" + port);
        mDB = mClient.getDB(dbName);
        valCollection = mDB.getCollection(collectionName);

        userid = uuser.getText();

        BasicDBObject findPara = new BasicDBObject();
        BasicDBObject findCon = new BasicDBObject();

        findPara.append("userid", userid);
        findCon.append("userid", true);
        findCon.append("_id", false);

        cursor = valCollection.find(findPara, findCon);

        flag = 1;
        while (cursor.hasNext()) {
            flag = 0;
            System.out.println("User ID is not correct!!!");
        }

        if (flag == 0) {
            System.out.println("User Id is not correct...");

            dispose();
            new Register().setVisible(true);
        }

        System.out.println("Move Forward Your Id is correct...");

    } catch (UnknownHostException e) {
        e.printStackTrace();
        System.exit(-1);
    }
}  

代码永远不会前进到下一条记录。

循环应包含

cursor.next()

消耗结果。

很确定你必须这样做:

flag=1;
while (cursor.hasNext())
{
  cursor.next();
  flag=0;
  System.out.println("User ID is not correct!!!");
}

因为您的光标永远不会移动到下一个元素。 此外,我认为为您的目的使用 while 循环没有任何好处。 在这种情况下,您甚至不需要移动光标, 如果您只想知道是否没有带有该 ID 的条目。

flag=1;
if(cursor.hasNext())
{
  flag=0;
  System.out.println("User ID is not correct!!!");
}