1. ホーム
  2. java

[解決済み] double cannot be dereferenced "というエラーはどういう意味ですか?

2022-02-16 21:55:45

質問

ArrayListがプリミティブなデータを保持できないことは理解しています。 しかし、Arraylist コンストラクタと一緒に horseFeed() メソッドを呼び出すと、double dereferenced エラーが発生することはないのでしょうか?

また、double dereferenced エラーとは何か、なぜこのようなエラーが発生するのか、誰か説明してください。

このメソッドは私のクラス内にあります。

public class horse
{
  .
  .
  .


  //took out a lot of code as it was not important to the problem

  public String horseFeed(double w)
  {
    double sFeed= w*.015;
    double eFeed= w*.013;
    String range = sFeed + " < " + eFeed;
    return range;
  }
}

これはArrayListクラスです。

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

  }
}

これはドライバです

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()); 
  }
 }

解決方法は?

このエラーは、メソッドを呼び出そうとしたのが 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 を呼び出すことができます。

また、クラス名は大文字から始まるという慣例に従ってください。