有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java返回值,在for循环中使用if语句

我的方法应该返回一张卡,我在for循环中有一个if语句——我不想在末尾添加“return c”,因为这将返回carddeck中的最后一张卡。我在说“必须返回类型卡”时出错。你有什么建议

另外,这是我的第一篇帖子——如果有一个明显的答案,请道歉。所有这些支架都让我不舒服

  public Card findRightCardWithIndex(int index) throws IllegalArgumentException {
    for(Card c:carddeck) {
      if (c.getIndex() == index) {
        return c;
      } else {
        throw new IllegalArgumentException("Invalid index");
      }
    }
  }

共 (4) 个答案

  1. # 1 楼答案

    您要做的是扫描整个列表,如果找不到,则在找不到时生成响应

     public Card findRightCardWithIndex(int index) throws IllegalArgumentException {
        for(Card c:carddeck) {
          if (c.getIndex() == index) {
             return c;
          }
        }
    
        throw new IllegalArgumentException("Invalid index");
    
      }
    
  2. # 2 楼答案

    也许您应该将此代码更改为Java8流,这会使它更明显,更不容易出错(但速度会稍慢)

    例如:

    public Card findRightCardWithIndex(int index) throws IllegalArgumentException {
        return cards.stream()
                    .filter(c -> c.getIndex() == index)
                    .findFirst()
                    .orElseThrow(()->new IllegalArgumentException("Invalid index"));
    }
    
  3. # 3 楼答案

    我认为这是正确的做法

    public Card findRightCardWithIndex(int index) throws IllegalArgumentException {
      Card card;
      for(Card c:carddeck) {
        if (c.getIndex() == index) {
          card =  c;
          break;
        }
        if(card != null){ // you shuld make an empty method here
          return card;
        }
        throw new IllegalArgumentException("No card found");
    }
    
  4. # 4 楼答案

    创建一个空卡片对象,如果在循环中找到索引,则将卡片分配给对象,并用break终止循环。 如果对象不为null,则返回该对象,否则抛出异常,因为这意味着没有具有该索引的卡

    public Card findRightCardWithIndex(int index) throws IllegalArgumentException {
        Card card = null;
        for (Card c : carddeck) {
            if (c.getIndex() == index) {
                card = c;
                break;
            }
        }
        if (card != null) {
            return card;
        } else {
            throw new IllegalArgumentException("Invalid index");
        }
    }