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

kra*_*r65 0 java variables android scope while-loop

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

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

我收到此消息称"名称"无法解析为变量.所以我认为名称是while循环的本地名称.我现在想知道,如何从while循环中获取此变量?

Phi*_*der 5

在循环外定义变量

String name = null;

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

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