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