【问题标题】:How to return a value inside a loop in a return method?如何在返回方法的循环内返回一个值?
【发布时间】:2013-11-06 04:34:09
【问题描述】:

我无法从方法中的循环返回值。

我试过这种方式:(返回classname,我的初始化字符串而不是classes.get(i).className

public String getClassName(){
    String cName = "classname";
    for (int i=0; i<classes.size(); i++){
        cName = classes.get(i).className;
    }
return cName;
}    

我也试过这个:(返回c而不是classes.get(i).className

public String getClassName(){
    String cName = "classname";
    String c = "c";
    for (int i=0; i<classes.size(); i++){
        c = classes.get(i).className;
    }
    cName = c;
    return cName;
}    

请告诉我如何返回classes.get(i).className!!非常感谢:P

【问题讨论】:

  • 根据什么返回值?!因为在您的情况下,将返回类列表中的最后一个值。
  • 是不是说我的代码没有问题但是ArrayList中实际上什么都没有存储,所以返回了初始化的值?
  • 是和不是。从语法上讲,您的代码是正确的,如果列表中有数据,您将获得不同的输出(不是您默认设置的 className)。但从逻辑上讲,它不会总是返回列表中的最后一个元素,我真的怀疑你是否想要这样,因为如果是这样的话,return classes.get(classes.size() - 1).className; 就足够了。您甚至不需要遍历列表。
  • @R.J 谢谢。但是如果ArrayList classes最初有0个项目,恐怕使用return classes.get(classes.size() - 1).className会得到java.lang.ArrayIndexOutOfBoundsException: -1错误
  • 您可以在返回之前进行空/空检查。就如此容易。此外,由于它是一个列表,您将获得IndexOutOfBoundsException

标签: java loops methods return return-value


【解决方案1】:

类中没有存储任何内容。确保你有你认为你在做什么。试着把它放在 for 循环中看看发生了什么:

System.out.print("class name = " + cName);

如果这永远不会打印出来,你就知道类是空的。在任何时候 for 循环中,您都可以调用return,例如,如果类名匹配您可以在if 语句中测试的内容.

for (int i=0; i<classes.size(); i++){
    cName = classes.get(i).className;
    return cName;
}

另外,您可以投票或将某人标记为正确吗? (我是新来的,希望有一些这样标记的好答案:))

【讨论】:

    【解决方案2】:

    我不知道你想做什么,但你的代码相当于:

    public String getClassName() {
        return classes.get(classes.size() - 1).className;
    }
    

    您确定这是您要返回的内容吗?你应该小心classes 是空的,因为你可能会得到ArrayIndexOutOfBoundsException

    【讨论】:

    • 谢谢!我刚刚试了一下,我得到了这个错误:java.lang.ArrayIndexOutOfBoundsException: -1
    • 意味着你的类对象是空的。
    • @Sue 因为classes 是空的。
    • 那是因为你的classes 是空的。
    • 谢谢。似乎我的程序的其他部分有问题:(
    【解决方案3】:

    虽然 Maroun 的代码只返回类集合中的最后一个值是正确的,但现实情况是,在您的示例中,集合始终为空,因此 for 循环甚至不会执行一次。确保 classes 集合包含您认为应该包含的内容!

    【讨论】:

    • 我明白了!那么这是否意味着classes 中实际上没有存储任何内容?
    • 是的……这就是我所说的,也是我的意思(现在这个评论已经够长了)
    【解决方案4】:

    那应该是因为你没有进入for循环主要是因为你列出的“类”是空的。 你可以这样检查-

    if(classes.size()==0)
       System.out.println("Classes is empty");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-02
      • 1970-01-01
      • 2021-05-13
      • 1970-01-01
      • 2023-03-19
      相关资源
      最近更新 更多