-5

我有一个小问题.. 我怎样才能返回 Array List 类型的 null .. 这是完整的问题: RectangleList 类管理一个矩形列表。它有一个构造函数,它接受一个矩形数组列表作为参数。它有一个方法可以返回面积最小的矩形(如果列表为空,则返回 null)。谢谢!

这是我所做的代码:

public Rectangle smallestArea()
            {
            double min = list.get(0).getWidth() * list.get(0).getHeight();
            int k=0;

           if(list.size() > 0)
           {
            for(int i=0; i<list.size(); i++)
                {

                if(list.get(i).getWidth() * list.get(i).getHeight() < min)
                {
                    min = list.get(i).getWidth() * list.get(i).getHeight();
                    k=i;}
                }

             return list.get(k);
           }

           else
               {
               return null;
               }
    }

    And I get this error : java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
        at java.util.ArrayList.rangeCheck(ArrayList.java:604)
        at java.util.ArrayList.get(ArrayList.java:382)
        at RectangleList.smallestArea(RectangleList.java:39)
        at RectangleListTester.main(RectangleListTester.java:25)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at com.horstmann.codecheck.Main$2.run(Main.java:249)
    Error:

    Program exited before all expected values were printed.

我还想指出,这不是学校的家庭作业。我只是在做这件事,但我被困在这里。谢谢您的支持。

4

2 回答 2

1

null不属于任何类型,可以用于任何类型(不包括原语)。

所以,你总是可以说MyClass obj = null;

其他问题可能是如果您有 2 个具有不同参数类型的重载方法,例如:

void foo(String s);
void foo(Integer i);

在这种情况下,尝试调用:foo(null)将产生编译错误,因为编译器无法理解您的意思是两种方法中的哪一种。在这种情况下,您可以执行强制转换:

  • foo((String)null)将调用第一个版本foo()
  • foo((Integer)null)将调用第二个版本foo()
于 2013-10-28T13:31:36.520 回答
0

您可以在需要时返回 null。您返回的是对对象的引用,而 null 是对不存在对象的通用引用,因此您不必强制转换它或任何东西。

public Rectangle getSmallestAreaRectangle() {
    if (theList.isEmpty()) {
        return null;
    }

    // ... do computations

    return theRectangle;
}
于 2013-10-28T13:27:17.390 回答