【问题标题】:How to get variable out of Java while loop?如何从Java while循环中获取变量?
【发布时间】:2013-09-27 11:58:02
【问题描述】:

我刚刚学习 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 个相同的答案:D

标签: java android variables while-loop scope


【解决方案1】:

在循环外定义变量

String name = null;

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

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

【讨论】:

  • 但请记住,上面的代码会遍历所有 phone_cursor 条目,但只会保留并打印最后一个条目的值。
【解决方案2】:

你必须在循环外定义你的变量:

String name = null;

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

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

【讨论】:

    【解决方案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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-18
      • 2015-05-02
      • 1970-01-01
      • 2022-09-25
      • 2012-06-01
      • 1970-01-01
      相关资源
      最近更新 更多