为什么它会进入无限循环

时间:2015-09-27 18:00:22

标签: java mongodb user-interface registration netbeans-8

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

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);
    }
}  

2 个答案:

答案 0 :(得分:2)

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

循环应包含

cursor.next()

使用结果。

答案 1 :(得分:2)

很确定你必须做这样的事情:

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!!!");
}