如何在循环中获取Java变量?

时间:2013-09-27 11:58:02

标签: java android variables while-loop scope

我只是在学习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循环中获取这个变量?

3 个答案:

答案 0 :(得分:5)

在循环之外定义变量

String name = null;

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

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

答案 1 :(得分:4)

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

String name = null;

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

Log.wtf("Name: ", name);

答案 2 :(得分: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);

喜欢阅读:Block and Statements