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!我很感激!非常感谢你的帮助,路易斯!我很感激!