当前位置: 首页 > 知识库问答 >
问题:

尝试从方法返回数组列表时的“不兼容类型”

诸葛立果
2023-03-14

在这个类中,我想整体返回一个arraylist,而不是作为单个元素返回。然而,我在编译时遇到了一个错误,“不兼容类型”。我做错了什么?谢谢你的帮助!!

import java.util.ArrayList;
public class CO2FromElectricity
{



/**
 * Constructor for objects of class CO2FromElectricity
 */
public CO2FromElectricity()
{

}

public static double calcAverageBill(ArrayList<Double> monthlyBill, int ind) 
{
  ArrayList<Double> avgBill = new ArrayList<Double>();
  int i = ind;
  avgBill.set(i, (monthlyBill.get(i) + avgBill.get(i))/2); 
  return avgBill.get(i);    
}

public double calcAveragePrice(ArrayList<Double> monthlyPrice, int ind)
{
    int i = ind; 
    ArrayList<Double> avgPrice = new ArrayList<Double>();
    avgPrice.set(i, (monthlyPrice.get(i) + avgPrice.get(i))/2);
    return avgPrice;
}

public double calcElectricityCO2(double avgBill, double avgPrice)
{
    double avBill = avgBill;
    double avPrice = avgPrice; //Price per kilowatt that is...
    double emissions = (avBill/avPrice)*1.37*12; 
    return emissions;

}
}

共有3个答案

施琦
2023-03-14
public ArrayList<Double> calcAveragePrice(ArrayList<Double> monthlyPrice, int ind) {
    int i = ind;
    ArrayList<Double> avgPrice = new ArrayList<Double>();
    avgPrice.set(i, (monthlyPrice.get(i) + avgPrice.get(i)) / 2);
    return avgPrice;
}
西门威
2023-03-14
public double calcAveragePrice(ArrayList<Double> monthlyPrice, int ind)

该方法期望返回一个double。

ArrayList<Double> avgPriAce = new ArrayList<Double>();
...
return avgPrice;

您正在返回一个arrayList。将您的代码更改为如下所示:

public ArrayList<Double> calcAveragePrice(ArrayList<Double> monthlyPrice, int ind)

这应该可以解决问题。

仔细想想,你的方法是做一些非常奇怪的事情。我肯定你不想要一个数组列表作为平均值。你肯定想要一个两倍作为平均值。

如果我的假设是正确的,您是在尝试将每月价格中的每个值相加,然后返回平均值?在这种情况下,需要循环数组中的每个值,将它们相加,除以元素数,得到平均值,并将其作为双精度返回。只有我的2美分。

杨轶
2023-03-14

calcAveragePrice()方法中,您将返回一个列表,而该方法被定义为返回一个双值。

将方法签名更改为

public List<Double> calcAveragePrice(...)

或者返回一个

return list.get(i); //similar to the getAverageBill() method
 类似资料:
  • 我定义了这个类: 在其他地方,在具有此签名的函数中: 我尝试返回新的ActorMapper(),但javac抱怨: 我可以投射它,它工作得很好,但为什么不能编译呢。有人能帮我吗?:)

  • 问题内容: 我正在学习Java。我试图运行代码,但出现此错误:。它向我显示错误的代码部分。 为什么会这样呢? 问题答案: 这是因为在类中不能有两个具有相同名称但返回类型不同的方法。 子类不能使用与返回类型不同的超类中已经存在的方法相同的名称声明方法。 但是,子类可以声明具有与超类相同的签名的方法。我们称此为“覆盖”。 你需要这个 要么 一个好的做法是通过注释标记覆盖的方法:

  • 我试图通过对象属性NodeID排序一个对象,这是一个长类型。 有什么方法可以通过对象属性NodeID对PeerNode的ArrayList进行排序吗??

  • 试图将两个数组合并在一起,但收到一个错误:

  • 我应该如何更改getPhoneNumber内部的代码才能正确工作,有什么想法吗?这是我最后应该得到的+38(050)123-45-67。38是国家代码,这是电话号码501234567,但你必须在数字开头放零才能得到10个类似于这里的数字(>0<50) 完整的代码。

  • 我使用保存通过调用方法。然后,我尝试使用方法。但当我尝试这样做时,我得到了一个。这其中的原因是什么?我应该如何解决这个问题?