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

Java 如何计算同一类的两个对象?,java,arrays,class,object,methods,Java,Arrays,Class,Object,Methods,我试图计算\u超级英雄数组的第一个和最后一个超级英雄实例之间的组合电势,并显示结果。我在SuperHero类中创建了一个方法,用于计算类的两个实例之间的组合电势。当我尝试执行此方法时,出现以下错误: TestSuperHero.java:20: error: cannot find symbol double n = _superHeroes.combinedPotential(_superHeroes[0], _superHeroes[2]);

我试图计算
\u超级英雄
数组的第一个和最后一个
超级英雄
实例之间的组合电势,并显示结果。我在
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;
           }
        }

要理解这个问题:
\u SuperHero
是一个
SuperHero
数组,您试图在该数组上调用该类的方法。但是该数组并不继承类的方法。相反,您需要对存储在数组中的实例调用该方法

_superHeroes[0].combinedPotential(_superHeroes[0], _superHeroes[2]);
更好的解决方案:由于该方法不使用类的任何字段进行计算,您还可以声明该方法
static
,并调用该静态方法,而无需实例:

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

这应该是一种
静态
方法:

public static double combinedPotential(...) { ... }
然后你称之为

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

Java命名约定不允许在名称中使用下划线,常量除外。非常感谢您的详细解释,Simulant!我很感激!非常感谢你的帮助,路易斯!我很感激!