从嵌套循环返回时返回null

时间:2015-06-04 16:14:35

标签: java

我正在返回一个数组String []数据,但它返回NULL。 我试图在数据[]中存储数组,但没有工作, 现在我在字符串(名称,电话,临时密码,密码)中有值,但不能返回..

public String[] searchUserData(String email) {

String[] data= null;
String temp,name,phone,password;

    if (cr.moveToFirst()) {

        do {
            temp = cr.getString(2);

            if (temp.equals(email)) {

                //data[0]= cr.getString(1);
                //data[1]= cr.getString(2);
                //data[2]= cr.getString31);
                //data[3]= cr.getString41);

                name = cr.getString(1);
                phone = cr.getString(3);
                password = cr.getString(4);

                Log.i("Values", name+" "+phone+" "+email+" "+password);


            } 
        } while (cr.moveToNext());
        cr.close();
    }
    db.close();

    return data;

}

3 个答案:

答案 0 :(得分:2)

String[] data = new String[4];会让你失望。

这为data数组提供了4个元素,这些元素最初设置为null

可以使用data[0]data[3]访问这些:Java中的数组索引是从0开始的。

答案 1 :(得分:0)

您尚未创建String数组对象

public String[] searchUserData(String email) {

String[] data= new String[4];
String temp,name,phone,password;

    if (cr.moveToFirst()) {

        do {
            temp = cr.getString(2);

            if (temp.equals(email)) {

                data[0]= cr.getString(1);
                data[1]= cr.getString(2);
                data[2]= cr.getString31);
                data[3]= cr.getString41);

                name = cr.getString(1);
                phone = cr.getString(3);
                password = cr.getString(4);

                Log.i("Values", name+" "+phone+" "+email+" "+password);


            } 
        } while (cr.moveToNext());
        cr.close();
    }
    db.close();

    return data;

}

答案 2 :(得分:0)

您还有其他一些问题:

  1. 没有cr和db的声明。有人认为这些是在代码中其他地方已适当设置的实例变量。
  2. 您反复设置相同的数据数组,直到cr.moveToNext()返回false。也许你的意思是在temp匹配电子邮件时设置数据数组后摆脱循环?