错误无法从int转换为布尔值

时间:2013-10-10 05:40:49

标签: java

我正面临错误无法从int转换为布尔值,这是我遇到此问题的代码。

private boolean seeDB()
  {
    int i = 1;
    SQLiteDatabase localSQLiteDatabase = null;
    try
    {
      localSQLiteDatabase = SQLiteDatabase.openDatabase(DB_PATH + DB_NAME, null, 1);
      localSQLiteDatabase = localSQLiteDatabase;
      label01: 
          if (localSQLiteDatabase != null)
        localSQLiteDatabase.close();
      if (localSQLiteDatabase != null);
      while (true)
      {
        return i;
      }
    }
    catch (SQLiteException localSQLiteException)
    {
      break label01;
    }
  }

5 个答案:

答案 0 :(得分:2)

您的方法返回类型boolean

private boolean seeDB()

您将返回int

 return i;

所以错误是正确的。

另一个错误是

  if (localSQLiteDatabase != null);   <--

那个条件以额外的;

结束

最后你应该考虑一下你的逻辑,告诉我们你想要做什么。你可能会得到一个更好的逻辑。

这里有一些关于你在做什么的想法

 private boolean closeDB()
      {
        SQLiteDatabase localSQLiteDatabase = null;
        try
        {
          localSQLiteDatabase = SQLiteDatabase.openDatabase(DB_PATH + DB_NAME, null, 1);
          if (localSQLiteDatabase != null){
            localSQLiteDatabase.close();
            return true; // opended DB closed 
          }else{
            return false;//  no connections opened right now.
          }

        }
        catch (SQLiteException localSQLiteException){
      }

答案 1 :(得分:1)

您的方法假设返回布尔值:

private boolean seeDB()

但是你要返回一个int

    return i;

我被定义为int

int i = 1;

答案 2 :(得分:1)

是的,问题在于:

while (true)
{
    return i;
}

声明该方法返回boolean,但i被声明为int。那不行。您需要将返回类型更改为int,或者在您想要返回true时以及何时返回false时确定。

此外:

  • i的值始终将为1
  • 你是在while(true)循环中返回它,这是毫无意义的
  • 据我所知,您在catch区块中打破标签的方法无效。
  • 你这里有一句毫无意义的if陈述:

    if (localSQLiteDatabase != null);
    

您实际尝试使用此代码实现的是什么?老实说,看起来它只是严重反编译的代码。我建议你从头开始,准确地解决你想要实现的目标,并从那里开始。你当前的代码非常混乱,无助。

答案 3 :(得分:0)

你的方法返回类型是布尔值,你试图返回int值

答案 4 :(得分:0)

如果i是一种标志,那么它应该是boolean类型而不是int类型。您的方法的返回类型是booelan。为i使用int类型的任何特定原因。

-RIA