如果链接列表为空,则返回int的方法不返回任何内容?

时间:2013-01-22 20:21:36

标签: java linked-list return

编辑:解决了。显然,返回0是有效的!

好的长话短说,我必须返回一个int值,但是当Linked List为空时却没有。我该怎么做?

public int countDuplicates() {

int duplicates = 0;

ListNode current = front;

int num = current.data;
current = current.next;

while(current != null) {
    if(current.data == num) {
        duplicates++;
    } else {
        num = current.data;
    }
    current = current.next;
}
return duplicates;
}

当我尝试这个时:

if(front == null) {
    return ;
}

这不起作用。我该怎么办?

8 个答案:

答案 0 :(得分:5)

你宁愿抛出一个IllegalArgumentException: -

if(front == null) {
    throw new IllegalArgumentException("List is empty");
}

答案 1 :(得分:3)

如果您的方法返回int,则必须确定一个可接受的值来表示“无”。如0或有效结果为>= 0,请使用-1等负值表示“无”。

或者,修改您的方法以返回Integer对象,在这种情况下,您可以返回null

答案 2 :(得分:2)

您可以定义一个固定值,例如Integer.MIN_VALUE,表示列表为空,或者将方法声明更改为public Integer countDuplicates(),然后返回{{ 1}}当列表为空时。

答案 3 :(得分:1)

要保留现在的代码,您必须返回int,抛出异常或退出。

  
      
  1. 返回一个int:您必须将某个int值指定为“fail”值,并确保在“正常”执行期间不会遇到此值。

  2.   
  3. 抛出异常:在另一个答案中详细说明 - 您已经将其击落。

  4.   
  5. 退出程序......如果有意义的话。

  6.   

最好的选择可能是更改代码 - 例如,让函数返回一个Integer,因此null选项就在那里。肯定还有其他方法可以解决这个问题。

答案 4 :(得分:0)

如果您不想(或不能)抛出异常,请返回一些“异常值”,例如负数。例如,Java有很多indexOf(Object somethingToLookFor)方法,如果找不到该项,则返回-1。

在你的例子中,-1作为例外工作,因为永远不会有-1重复。

就个人而言,我只会为空列表返回0。空列表有0个重复项。但如果规范坚持特殊情况,则返回-1。

答案 5 :(得分:0)

您可以将返回值从int更改为对象

public Object countDuplicates() {
    if(////condition)
        return ///int;
    else 
        return null;

答案 6 :(得分:0)

您可以返回负值或将返回类型更改为字符串,并将结果解析为int。

答案 7 :(得分:-1)

public boolean isEmpty(){
    if (head == null) return true;
    else return false ;
}