我正在尝试计算 _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/