有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

方法中缺少返回语句的java错误

我想基于名称的fragment获取数据,但是为什么会出现错误并描述缺少的return语句呢

public Cursor getName (String nama){
    Cursor c = db.query(Konstanta.NAMA_TABEL, new String[]{
            Konstanta.ID_ARTIS,
            Konstanta.NAMA_ARTIS,
            Konstanta.GENDER_ARTIS_PRIA,
            Konstanta.GENDER_ARTIS_WANITA,
            Konstanta.TGLAHIR}, Konstanta.NAMA_ARTIS + "LIKE '%" + nama + "%'",
            null, null, null, null, null);
    if (c != null){
        c.moveToFirst();
        return c;
    }
}

共 (4) 个答案

  1. # 1 楼答案

    只有当c不为null时,您的方法才会返回结果。它必须在所有情况下返回结果,即即使c为空

    你可以改变

        if (c != null){
            c.moveToFirst();
            return c;
        }
    

        if (c != null){
            c.moveToFirst();
        }
        return c;
    
  2. # 2 楼答案

    每个具有返回值的方法都必须返回所描述的bean。如果c不为空,则需要返回null或引发自定义异常

    public Cursor getName (String nama){
            Cursor c = db.query(Konstanta.NAMA_TABEL, new String[]{
                    Konstanta.ID_ARTIS,
                    Konstanta.NAMA_ARTIS,
                    Konstanta.GENDER_ARTIS_PRIA,
                    Konstanta.GENDER_ARTIS_WANITA,
                    Konstanta.TGLAHIR}, Konstanta.NAMA_ARTIS + "LIKE '%" + nama + "%'",
                    null, null, null, null, null);
            if (c != null){
                c.moveToFirst();
                return c;
            }
            throw new IllegalStateException("c is null");
        }
    
  3. # 3 楼答案

    在第行下方添加-

    return null;
    

    在代码块中-

    public Cursor getName (String nama){
        Cursor c = db.query(Konstanta.NAMA_TABEL, new String[]{
                Konstanta.ID_ARTIS,
                Konstanta.NAMA_ARTIS,
                Konstanta.GENDER_ARTIS_PRIA,
                Konstanta.GENDER_ARTIS_WANITA,
                Konstanta.TGLAHIR}, Konstanta.NAMA_ARTIS + "LIKE '%" + nama + "%'",
                null, null, null, null, null);
        if (c != null){
            c.moveToFirst();
            return c;
        }
    
    return null;
    }
    
  4. # 4 楼答案

    您的方法必须return游标类型值,但您仅在if循环中返回值

    这样做:

     public Cursor getName (String nama){
     Cursor c =null;
     c = db.query(Konstanta.NAMA_TABEL, new String[]{
                Konstanta.ID_ARTIS,
                Konstanta.NAMA_ARTIS,
                Konstanta.GENDER_ARTIS_PRIA,
                Konstanta.GENDER_ARTIS_WANITA,
                Konstanta.TGLAHIR}, Konstanta.NAMA_ARTIS + "LIKE '%" + nama + "%'",
                null, null, null, null, null);
        if (c != null){
            c.moveToFirst();
            return c;
        }
       return c;
       }