0

我对此感到有些困惑,因为我对 Java 还是很陌生。

这是我的问题:

我需要通过使用字符串将其传递给另一个对象来返回一个对象。即,我想将一个字符串传递给函数(getObject在这种情况下),然后ArrayList使用它们的getCode函数将它与一个单元对象进行比较。

到目前为止我所拥有的:

private Unit getUnitObject(String unit1Code) {
  for (int i = 0; i < units.size(); i++) {
    Unit currUnit = units.get(i);
    String unitCode = currUnit.getUnitCode();

    if (unit1Code == unitCode) {
      Unit selectedUnit = currUnit;
      return selectedUnit;
    } 
  }
}

它给了我一个错误-“此方法必须返回单元类型的结果”我尝试将返回移出 for 循环但仍然没有成功?我可以这样做吗?

4

4 回答 4

4

问题是,如果您没有找到匹配项,那么您将不会返回任何内容。尝试这个:

private Unit getUnitObject(String unit1Code) {
    for (int i = 0; i < units.size(); i++) {
        Unit currUnit = units.get(i);
        String unitCode = currUnit.getUnitCode();

        if (unit1Code.equals(unitCode)) {
             return currUnit;
        } 
    }
    return null;
}

请注意,我.equals()也在比较 String 对象。您可能希望返回比null没有匹配项更好的东西。

于 2013-10-17T15:02:51.510 回答
0
    private Unit getUnitObject(String unit1Code) {
    Unit selectedUnit = new Unit();
    for (int i = 0; i < units.size(); i++) {
    Unit currUnit = units.get(i);
    String unitCode = currUnit.getUnitCode();

     if (unit1Code.compareTo(unitCode)) {
      selectedUnit = currUnit;

        } 
      }
       return selectedUnit;
    }

您必须始终返回一个 Unit 对象,不仅 uni1Code 等于 UnitCode。因此,您在方法的开头创建一个变量,如果 if 为真,则进行赋值,最后返回。它将返回空 Unit 或 currentUnit..

于 2013-10-17T15:04:43.650 回答
0

问题是你只在你的 if 语句为真时返回一些东西,但当它为假时你也需要返回一些东西。在一个类中只有一个返回语句是一种很好的做法。在开头创建一个返回类型的变量(实例化为 null 或标准值)并根据您的条件更改此变量。最后返回那个变量。

  private Unit getUnitObject(String unit1Code) {
    Unit selectedUnit = null;
       for (int i = 0; i < units.size(); i++) {
       Unit currUnit = units.get(i);
       String unitCode = currUnit.getUnitCode();


        if (unit1Code == unitCode) {
          selectedUnit = currUnit;

           } 
         }
       return  selectedUnit;
       }
于 2013-10-17T15:02:50.363 回答
0

有了这个配置,我希望它能工作

 private Unit getUnitObject(String unit1Code) {
        Unit selectedUnit=null;
        for (int i = 0; i < units.size(); i++) {
            Unit currUnit = units.get(i);
            String unitCode = currUnit.getUnitCode();

             if (unit1Code.equals(unitCode)) {
              selectedUnit = currUnit;

            } 
        }
        return selectedUnit;
    }
于 2013-10-17T15:05:35.197 回答