0

我刚刚学习 Java,在这里我看到了这个奇怪的错误消息。在下面的代码中:

while (phones_cursor.moveToNext())
{
  String name = phones_cursor.getString(phones_cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
}
Log.wtf("Name: ", name);

我收到这条消息说“名称”无法解析为变量。所以我想 name 是 while 循环的本地名称。然而,我现在想知道,如何让这个变量脱离 while 循环?

4

3 回答 3

6

在循环外定义变量

String name = null;

while (phones_cursor.moveToNext())
{
  name = phones_cursor.getString(phones_cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
}
Log.wtf("Name: ", name);

这是因为每个块(以 开头{和结尾})都有自己的范围。但是内部作用域可以从外部作用域访问变量。

于 2013-09-27T11:59:53.890 回答
4

您必须在循环外定义变量:

String name = null;

while (phones_cursor.moveToNext())
{
    name = phones_cursor.getString(phones_cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
}

Log.wtf("Name: ", name);
于 2013-09-27T11:59:00.887 回答
3

这些变量超出范围。

在 java 中,范围仅限于{}.

只需将该variable声明移至顶部,以便它们进一步可用。

    String  name = null;
    while (phones_cursor.moveToNext())
    {
      name = phones_cursor.getString(phones_cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
    }
    Log.wtf("Name: ", name);

喜欢阅读:块和语句

于 2013-09-27T11:58:58.170 回答