java - 如何计算同一类的两个对象?

标签 java arrays class object methods

我正在尝试计算 _superHeroes 数组的第一个和最后一个 SuperHero 实例之间的组合势,并显示结果。我在 SuperHero 类中创建了一个方法,用于计算类的两个实例之间的组合势。当我尝试执行此方法时,出现以下错误:

TestSuperHero.java:20: error: cannot find symbol
    double n = _superHeroes.combinedPotential(_superHeroes[0], _superHeroes[2]);
                           ^
symbol:   method combinedPotential(SuperHero,SuperHero)
location: variable _superHeroes of type SuperHero[]
1 error

我非常感谢一些帮助!谢谢!

   import java.util.*;
    
    public class TestSuperHero
    {
       public static void main(String[] args)
       {
          //Welcome Message
          System.out.println("***** Welcome to the SuperHero Program ******\n");
          
          //Define Array of Three SuperHeros
          SuperHero [] _superHeroes = new SuperHero[3];
          
          //Initialize SuperHero Elements
          _superHeroes[0] = new SuperHero ("Poodle", 1000);
          _superHeroes[1] = new SuperHero ("HangNail", 200);
          _superHeroes[2] = new SuperHero ("WetSlipper", 50);
         
         //Create a Double Variable that will compute combinedPotential on 
         //_superHeroes[0] and _superHeroes[2]
         double n = _superHeroes.combinedPotential(_superHeroes[0], _superHeroes[2]);
       }
        class SuperHero
        {
           //Private Data Members
           private String _name;
           private double _kineticForce;
           
           //Constructor
           public SuperHero(String name, double kineticForce)
           {
              _name = name;
              _kineticForce = kineticForce;
           }
           
           /* Methods */
           
           //getName Accessor
           public String getName()
           {
              return _name;
           }
           
           //getKineticForce Accessor
           public double getKineticForce()
           {
              return _kineticForce;
           }
           
           //setKineticForce Mutator
           public void setKineticForce(double kineticForce)
           {
              _kineticForce = kineticForce;
           }
           
           public double damagePotential()
           {
              final double PI = 3.14159;
              double damagePotential = ((7.0/3.0) * PI) * (Math.pow(getKineticForce() / 2 , 5));
              return damagePotential;  
           }
           
           public double combinedPotential(SuperHero superHeroOne, SuperHero superHeroTwo)
           {
              double combinedPotential;
              double numerator = Math.pow(3 * superHeroOne.getKineticForce(), 2) 
                                - Math.pow(3 * superHeroTwo.getKineticForce(), 2);
              double denominator = superHeroOne.getKineticForce() - superHeroTwo.getKineticForce();
              
              combinedPotential = numerator / denominator;
              
              return combinedPotential; 
           }
           
           public String toString()
           {
              String superHero = "Name of SuperHero: " + getName();
              String kineticForce = "Kinetic Force of " + getName() + ": " + getKineticForce();
              return superHero + "\n" + kineticForce;
           }
        }

最佳答案

要理解这个问题:_superHeroes 是一个 SuperHero 数组,并且您试图在该数组上调用该类的方法。但数组并没有继承类的方法。相反,您需要在存储在数组内的实例上调用该方法。

_superHeroes[0].combinedPotential(_superHeroes[0], _superHeroes[2]);

更好的解决方案:由于该方法不使用类的任何字段进行计算,您也可以声明该方法static并调用静态方法,而无需实例:

public static double combinedPotential(SuperHero superHeroOne, SuperHero superHeroTwo) {
    ...
}
...
SuperHero.combinedPotential(_superHeroes[0], _superHeroes[2]);

关于java - 如何计算同一类的两个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64809597/

相关文章:

ios - 使用基于谓词键的另一个数组的谓词过滤数组

c++ - { token c++ 之前的预期类名

java - 类型中的方法不适用于参数 (Class<Main>)?

java - 为什么java中需要Boolean(boolean)构造函数?

java - 如何通过 JMS API 设置 MQMD ApplicationID 字段?

arrays - 如何附加到由指针标识的数组

c++ - 从文件读取文本到无符号字符数组,尝试使用示例时出错

c++ - 在我的类(class)中,我应该用什么来改变 cout/cin 的东西?

java - 将值添加到类型为 class 的 ArrayList 元素

java - VanillaSoftwareProcess 实体在 Apache Brooklyn 中不起作用