Why do I receive the error “This method must return a result of type …”?
当我清楚地返回变量"card"时,是否有人知道我为什么会收到错误"this method must return a result of type card"?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | public Card playCard(int id){ int i = 0; for (Card element : hand){ if (i <= hand.size()) { if (element.getID() == id) { Card card = hand.get(i); hand.remove(i); return card; } else { i++; } } else { throw new NullPointerException("Card does not exist in hand"); } } } |
除了在一个可能的场景中,您的方法不会返回任何内容。它必须在所有可能的场景中返回某些内容(或抛出异常)。
我想你是想这样做的:
1 2 3 4 5 6 7 8 9 | public Card playCard(int id){ for (Card element : hand) { if (element.getID() == id) { return element; } } throw new SomeAppropriateException("Card does not exist in hand"); } |
…但我有点猜测(因为我不知道
注意,对于不是由
您的方法签名是:
1 | public Card playCard(int id){ |
这意味着您必须返回一个
正如Tarlen所暗示的,您的代码需要这样修改:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | public Card playCard(int id){ int i = 0; for (Card element : hand){ if (i <= hand.size()) { if (element.getID() == id) { Card card = hand.get(i); hand.remove(i); return card; } else { i++; } } else { throw new NullPointerException("Card does not exist in hand"); } } return null; } |
我相信这将解释你的计划需要采取的所有可能的路线。你总是要跟踪返回到方法可以退出的任何地方。如果它可以在不命中返回语句的情况下退出,您将看到该错误。
对于整个方法,您需要有一个默认的
这是因为如果
在你的