Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java方法接受对象数组,然后一个double返回一个对象数组_Java_Arrays_Object_Double - Fatal编程技术网

java方法接受对象数组,然后一个double返回一个对象数组

java方法接受对象数组,然后一个double返回一个对象数组,java,arrays,object,double,Java,Arrays,Object,Double,我正在尝试写一个方法,接受房屋数组和一个价格,priceLimit。我希望该方法返回一组房屋,这些房屋的价格低于或等于priceLimit。我想传递数据以确定返回数组的大小。问题是我不知道如何将House数组中的House对象添加到lowPriceHouses数组中。我得到的错误是: Exception in thread "main" java.lang.NullPointerException at prob3.HouseTester.getLowPriced(HouseTeste

我正在尝试写一个方法,接受房屋数组和一个价格,priceLimit。我希望该方法返回一组房屋,这些房屋的价格低于或等于priceLimit。我想传递数据以确定返回数组的大小。问题是我不知道如何将House数组中的House对象添加到lowPriceHouses数组中。我得到的错误是:

    Exception in thread "main" java.lang.NullPointerException at 
prob3.HouseTester.getLowPriced(HouseTester.java:76) at 
prob3.HouseTester.main(HouseTester.java:52)
代码

private static House[] getLowPriced(House[] houses, double priceLimit) 
{

    House[] lowPriceHouses = null;
    int index = 0;

    for (int i = 0; i <= houses.length; i++)
    {
        double prices = houses[i].getPrice();
        if (prices <= priceLimit)
            lowPriceHouses[index++] = houses[i];
    }

    return lowPriceHouses;  
}
private static House[] getLowPriced(House[] houses, double priceLimit) 
{

    List<House> lowPriceHouses = new ArrayList<House>(houses.length);

    for (int i = 0; i <= houses.length; i++)
    {
        double prices = houses[i].getPrice();
        if (prices <= priceLimit)
            lowPriceHouses.add(houses[i]);
    }

    return lowPriceHouses.toArray(new House[lowPriceHouses.size()]);  
}
私人静态房屋[]定价过低(房屋[]房屋,双倍限价)
{
House[]LowPricehouse=null;
int指数=0;

对于(int i=0;i您需要在写入之前创建数组

House[] lowPriceHouses = null;
应该是

House[] lowPriceHouses = new House[houses.length]; 
实际上,您需要一个更小的阵列,因为您可能不需要所有的房子。。 将其设置为
ArrayList
,然后在返回之前将其
转换为array
,会更容易



for(int i=0;i在写入数组之前,需要先创建数组

House[] lowPriceHouses = null;
应该是

House[] lowPriceHouses = new House[houses.length]; 
实际上,您需要一个更小的阵列,因为您可能不需要所有的房子。。 将其设置为
ArrayList
,然后在返回之前将其
转换为array
,会更容易



for(int i=0;i错误是因为
LowPricehouse
null
,您没有初始化它。您的循环也会有问题,Java数组是
0
索引的

因此,与其

for (int i = 0; i <= houses.length; i++)

该错误是因为
lowPriceHouses
null
,您尚未对其进行初始化。您的循环也会出现问题,Java数组被索引为
0

因此,与其

for (int i = 0; i <= houses.length; i++)

您的lowPriceHouses为空,因此您得到的是NullPointerException。请用以下代码替换

private static House[] getLowPriced(House[] houses, double priceLimit)  {
    List<House> lowPriceHouses  = new ArrayList<House>()
    int index = 0;

    for (int i = 0; i <= houses.length; i++)
    {
         double prices = houses[i].getPrice();
         if (prices <= priceLimit)
           lowPriceHouses.add(houses[i]);
    }

    return lowPriceHouses.toArray(new House[lowPriceHouses.size()]); 
}
私人静态房屋[]定价过低(房屋[]房屋,双倍限价){
List LowPricehouse=new ArrayList()
int指数=0;

对于(int i=0;i您lowPriceHouses为空,因此您得到的是NullPointerException。请用以下代码替换

private static House[] getLowPriced(House[] houses, double priceLimit)  {
    List<House> lowPriceHouses  = new ArrayList<House>()
    int index = 0;

    for (int i = 0; i <= houses.length; i++)
    {
         double prices = houses[i].getPrice();
         if (prices <= priceLimit)
           lowPriceHouses.add(houses[i]);
    }

    return lowPriceHouses.toArray(new House[lowPriceHouses.size()]); 
}
私人静态房屋[]定价过低(房屋[]房屋,双倍限价){
List LowPricehouse=new ArrayList()
int指数=0;

对于(int i=0;i或者,如果您使用的是Java 8,则可以执行以下操作:

public static House[] getLowPriced(final House[] houses, final double limit){
    final List<House> list = Arrays.asList(houses).stream().filter(h -> h.getPrice() <= limit).sorted(Comparator.comparing(House::getPrice)).collect(Collectors.toList());
    return list.toArray(new House[list.size()]);
}
公共静态房屋[]定价过低(最终房屋[]房屋,最终双倍限额){

final List List=Arrays.asList(houses).stream().filter(h->h.getPrice()或者,如果您使用的是Java 8,您可以执行以下操作:

public static House[] getLowPriced(final House[] houses, final double limit){
    final List<House> list = Arrays.asList(houses).stream().filter(h -> h.getPrice() <= limit).sorted(Comparator.comparing(House::getPrice)).collect(Collectors.toList());
    return list.toArray(new House[list.size()]);
}
公共静态房屋[]定价过低(最终房屋[]房屋,最终双倍限额){

final List List=Arrays.asList(houses.stream().filter(h->h.getPrice())我仍然收到一个错误:prob3.housetest.getLowPriced(housetest.java:76)的线程“main”java.lang.NullPointerException在prob3.housetest.main(housetest.java:52)中出现异常@KelliDavis有两个问题,我已经用这两个问题对其进行了更新,看一看。顺便说一句,这类任务似乎更适合集合而不是列表。可能房屋列表有某种固有的顺序,因此索引自然与房屋相关联……但是,我想这不是我在这里期望的。你真的是just处理房屋集合。如果这是我,我会简单地返回房屋集合(集合、列表等)来简化我的生活。@scottb你可能想链接到OP,或者更好地对问题进行评论,否则他可能看不到这一点。我仍然收到一个错误:线程“main”中的异常prob3.housetest.getLowPriced(housetest.java:76)处的java.lang.NullPointerException位于prob3.housetest.main(housetest.java:52)处@KelliDavis有两个问题,我已经用这两个问题对其进行了更新,看一看。顺便说一句,这类任务似乎更适合集合而不是列表。可能房屋列表有某种固有的顺序,因此索引自然与房屋相关联……但是,我想这不是我在这里期望的。你真的是j如果这是我的话,我只需归还一套房子(套间、单间等)就可以让我的生活更简单@scottb您可能想链接到OP,或者更好地对问题进行评论,否则当您指定ArrayList时,他可能看不到这一点。为什么要定义长度?我的意思是,
lowPriceHouses
是否可能比原始数组小?这不包含空元素吗?@DimitarDimitrov
ArrayList
是一个d动态数组,也就是说,它可以包含更多或更少的项目,并且它将根据您的需要进行增长。但这是要付出代价的。当列表增长超过当前的“限制”时,它需要调整大小。这是通过在其缓冲区中添加一些“空”空间来完成的。但这需要时间和内存。相反,我们提供了一个“猜测”我们可能拥有的值的数量。这使它更快。因为我们知道我们永远不会拥有超过
house.length
项,所以可以安全地将此值用作或初始化器。我明白了,所以这不会分配数组,它只会设置一个限制?谢谢。起初我在列表末尾得到null,但后来将其放入数组列表中把它转换回来真的很有帮助。它设置了一个“初始容量”,您可以自由地运行此限制,并且
ArrayList
将自动增长。当您指定ArrayList时,为什么要定义长度?我的意思是
LowPriceHouse
是否可能小于原始数组?它不包含空元素吗?@DimitarDimitrov
ArrayList
是一个动态数组也就是说,它可以包含更多或更少的项目,并且它将根据您的需要进行增长。但这是要付出代价的。当列表增长超过当前的“限制”时,它需要调整大小。这是通过在缓冲区中添加一些“空”空间来完成的。但这需要时间和内存。相反,我们提供了