什么错误" double无法解除引用"意思?

时间:2017-11-15 23:49:52

标签: java arraylist compiler-errors double

我知道ArrayList不能保存任何原始数据 但是如何将我的方法horseFeed()与我的Arraylist构造函数一起调用到驱动程序中,这样我就不会得到双重引用的错误

也可以有人向我解释一下双重引用错误是什么以及为什么我会得到它,请帮助

该方法在我的班级

import java.util.*;
public class horseStable
{
 . 
 .
 . 
 public double findHorseFeed(int i)
 {
   double weight = horseList.get(i).getWeight();
   return weight;

  }
}

这是ArrayList类

public class Main 
{
  public static void main(String args[])
  {
  //returns the weight of the horse works fine
  System.out.println(stable1.findHorseFeed(1)); 
  // This is supposed to use the horseFeed method in the class by using the horse's weight. Where can i place the horseFeed method without getting an error?
  System.out.println(stable1.findHorseFeed(1).horseFeed()); 
  }
 }

这是驱动程序

<svg width="600" height="600">
  <!--   Circle -->
  <g transform="translate(50,40)">
    <circle cx="0" cy="0" r="35" stroke="#aaa" stroke-width="2" fill="#fff"></circle>
    <text x="0" y="0" alignment-baseline="middle" font-size="12" stroke-width="0" stroke="#000" text-anchor="middle">HueLink</text>
  </g>
  
  <!--   In Rectangle text position needs to be given half of width and height of rectangle respectively -->
  <!--   Rectangle -->
  <g transform="translate(150,20)">
    <rect width="150" height="40" stroke="#aaa" stroke-width="2" fill="#fff"></rect>
    <text x="75" y="20" alignment-baseline="middle" font-size="12" stroke-width="0" stroke="#000" text-anchor="middle">HueLink</text>
  </g>
  
  <!--   Rectangle -->
  <g transform="translate(120,140)">
    <ellipse cx="0" cy="0" rx="100" ry="50" stroke="#aaa" stroke-width="2" fill="#fff"></ellipse>
    <text x="0" y="0" alignment-baseline="middle" font-size="12" stroke-width="0" stroke="#000" text-anchor="middle">HueLink</text>
  </g>
  
  
</svg>

2 个答案:

答案 0 :(得分:0)

该错误意味着您尝试在double值上调用方法 - 在Java中,double是原始类型,您无法在其上调用方法:

stable1.findHorseFeed(1).horseFeed()
             ^               ^
      returns a double   can't call any method on it

您需要使用预期参数调用正确对象上的方法 - 如下所示:

Horse aHorse = new Horse(...);
aHorse.horseFeed(stable1.findHorseFeed(1));

方法horseFeed()位于Horse类中,它接收double类型的参数,该参数由findHorseFeed()中的HorseStable方法返回}类。显然,首先需要创建一个类型Horse的实例来调用它。

另外,请遵循类名以大写字符开头的约定。

答案 1 :(得分:0)

findHorseFeed()返回double,您无法调用horseFeed()方法(它返回double,而不是horse对象)

首先,您需要编写(并随后调用)另一个方法来返回一个马对象,然后可以调用horseFeed()

在课程horseStable中,您需要一种类似

的方法
public horse findtHorse(int i) {
    horse myhorse = horseList.get(i);
    return myhorse
}

您可以在findHorseFeed上仅.getWeight()重构getHorse()

public double findHorseFeed(horse myhorse) {
    double weight = myhorse.getWeight();
    return weight
}

然后你可以打电话:

horse myHorse = stable1.findHorse(1);
String range = myHorse.horseFeed(stable1.findHorseFeed(myHorse));