【问题标题】:How to compute two objects of the same class?如何计算同一类的两个对象?
【发布时间】:2021-02-24 19:02:33
【问题描述】:

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

【问题讨论】:

  • Java 命名约定不允许在名称中使用下划线,除非是常量。

标签: java arrays class object methods


【解决方案1】:

这应该是一个static 方法:

public static double combinedPotential(...) { ... }

然后你称之为

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

【讨论】:

  • 非常感谢您的帮助,路易斯!我很感激!
【解决方案2】:

要理解这个问题:_superHeroesSuperHero 的数组,而您正试图在数组上调用该类的方法。但是数组不继承类的方法。相反,您需要在存储在数组内部的实例上调用该方法。

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

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

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

【讨论】:

  • 非常感谢您的详细解释,Simulant!我很感激!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多