Java 如果LinkedList为空,是否从返回int的方法中不返回任何内容?

Java 如果LinkedList为空,是否从返回int的方法中不返回任何内容?,java,linked-list,return,Java,Linked List,Return,编辑:已解决。显然,返回0是有效的 长话短说,我必须返回一个int值,但当链表为空时什么也不返回。我该怎么做 public int countDuplicates() { int duplicates = 0; ListNode current = front; int num = current.data; current = current.next; while(current != null) { if(current.data == num) { dup

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

长话短说,我必须返回一个int值,但当链表为空时什么也不返回。我该怎么做

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 ;
}
这不管用。我能做什么?

你可以扔一个:-


您可以定义一个固定值,例如
Integer.minu value
,该值指示列表为空,或者将方法的声明更改为
public Integer countreplicates()
,并在列表为空时返回
null

要保留现有代码,必须返回int、抛出异常或退出

  • 返回一个int:您必须指定一个特定的int值作为“fail”值,并确保在“正常”执行期间不会命中该值

  • 抛出一个异常:在另一个答案中详细说明-您已经击落了它

  • 退出程序。。。如果这样做有意义的话


  • 最好的选择可能是更改代码-例如,使函数返回一个整数,这样就有了
    null
    选项。当然还有其他方法可以解决这个问题。

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

    或者,修改您的方法以返回一个
    整数
    对象,在这种情况下,您可以返回
    null
    如果您不想(或不能)抛出异常,请返回一些“异常值”,例如负数。例如,Java有许多
    indexOf(objectsomethingtookfor)
    方法,如果找不到项,这些方法将返回-1

    在您的示例中,-1是例外的,因为永远不可能有-1重复项


    就我个人而言,对于空列表,我只会返回0。空列表有0个重复项。但是如果规范坚持某些异常,则返回-1。

    您可以将返回值从int更改为object,如下所示

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

    您可以返回一个负值,或者将返回类型更改为string,并将结果解析为int。

    是的,这是另一种选择,但我正在练习的在线编译器不接受异常。@KaranGoel。在这种情况下,您可以使用
    Integer
    返回类型,而不是
    int
    返回类型,并在空列表中返回
    null
    。你别无选择。@KaranGoel。。如果将返回类型更改为
    Integer
    ,则返回
    null
    将有效。如果0是其他条件的有效返回值,则返回0可能会有问题。我刚刚编辑了我的响应,建议您返回0…@Karan。。不要编辑问题来表示问题已经解决。而是将解决问题的答案之一标记为已接受。您可以单击每个答案旁边的一个箭头。
    public boolean isEmpty(){
        if (head == null) return true;
        else return false ;
    }
    
    public boolean isEmpty(){
        if (head == null) return true;
        else return false ;
    }