【问题标题】:Java: returning a list with a for loopJava:返回一个带有 for 循环的列表
【发布时间】:2014-01-24 01:30:49
【问题描述】:

我在 java 中的这个 for 循环遇到了一些困难:

public String[] geefAlleTemplateNamen(String[][] templateLijst){
    for(int i = 0; i < templateLijst.length; i++){
    String lijst[] = {templateLijst[i][0]};
    }
    return lijst;
}

当我执行程序时,我得到以下错误:

 Mailmatcher.java:39: error: cannot find symbol
                return lijst;
                       ^
  symbol:   variable lijst
  location: class Mailmatcher
1 error

我认为这是因为'lijst'是在for循环内声明的,所以它在外面是未知的,虽然我想我知道问题是什么,但我不知道如何解决这个问题。

任何想法都将不胜感激!

我已经使用了搜索,但并没有真正找到任何东西,这是一个学校项目,所以我不期待预先制作的答案。

谢谢!

【问题讨论】:

  • "我认为这是因为 'lijst' 是在 for 循环内声明的,所以它在外面是未知的,虽然我想我知道问题出在哪里,但我不知道如何解决这个问题。” 然后在循环外声明它:)。并且总是更喜欢String[] lijst 而不是String lijst[]

标签: java loops for-loop return


【解决方案1】:

要补充 kocko 的答案,这是因为列表的范围仅限于循环内。这会导致两个问题,

  1. 对于循环的每次迭代,该列表都被重新声明为一个新的空列表(清除任何以前存储的数据)
  2. 返回在循环之外,因此它无法访问列表,一旦您的代码完成循环并继续前进,它几乎不再存在。

所以是的,在循环之前声明列表。

【讨论】:

    【解决方案2】:

    您必须在循环外声明lijst[] 并在循环内填充数组:

    String lijst[] = new String[templateLijst.length];
    for(int i = 0; i < templateLijst.length; i++){
        lijst[i] = templateLijst[i][0];
    }
    return lijst;
    

    【讨论】:

    • 谢谢,这解决了,也许下次我得再想一想:)
    • 您也可以在此处使用增强的 for 循环。
    • @user3165926 考虑accepting这个答案。
    猜你喜欢
    • 1970-01-01
    • 2013-07-20
    • 2012-10-16
    • 1970-01-01
    • 2016-09-03
    • 2021-12-17
    • 2014-03-22
    • 2011-12-09
    • 2018-12-27
    相关资源
    最近更新 更多