我正在开发一个程序,允许用户在四支球队之间选择主客场足球队。我创建了一个通用的超类团队,它定义了每个安全/场球/达阵得分分配的点数。生成一个随机数,然后根据该数字,程序执行条件if/else语句,以确定动作和点。
这是在超类中:
public void possessionPoints()
{
if(points<lowNopoints){
score = noPoints;
totalScore = totalScore + score;
System.out.println("No points, plus " + score);
}
else if(points<lowSafetypoint){
score = safetyPoint;
totalScore = totalScore + score;
System.out.println("Safety, plus" + score);
}
else if(points<lowFieldgoal){
score = fieldGoal;
totalScore = totalScore + fieldGoal;
System.out.println("Field goal, plus" + score);
}
else{
score = touchDown;
totalScore = totalScore + touchDown;
System.out.println("Touchdown, plus" + score);
}
ArrayList<Integer> totalScore;
totalScore = new ArrayList<>();
totalScore.add(score);
//the sum score
int sum = totalScore.stream().mapToInt(Integer::intValue).sum();
System.out.println("Current score is: " + sum);
}
注意:上面的totalScore
初始化为public static int totalScore=0;
在整个过程中,我希望跟踪totalscore
。我在我的超类中有这样的设置,然而,当程序运行时,它将整个游戏的分数相加,而不区分队伍。
客场团队行动。射门得分+3当前得分:3
主队行动。射门得分+3当前得分:6
客场团队行动。射门得分+3当前得分:9
public class PackersSub extends GenericSuper{
public PackersSub()
{
lowNopoints = 4;
lowSafetypoint = 5;
lowFieldgoal = 7;
}
对如何解决这个问题有什么想法吗?我想跟踪每个团队的totalscore
。谢谢你!
如果您希望在每个团队级别跟踪,那么您应该将其定义为成员变量,以便每个团队都有自己的totalscore
字段副本。
在超类中有一个statice
字段意味着它始终是在子类中发生的所有操作的总聚合。因为每个类只维护static
字段的一个副本。在您的例子中,您已经在超类中定义了它,这使得它成为一个用于分数聚合的全局字段。
问题内容: 我已经在Python的Stack Exchange上阅读了很多答案,为什么在类中使用“ self”? 阅读这些答案后,我了解到实例变量对于该类的每个实例都是唯一的,而在所有实例之间共享类变量。 在玩耍时,我发现这段代码给出了输出: 但是,此代码作为输出,在我看来应为: 为什么我运行时类变量没有更新?我没有编程方面的经验,所以请原谅。 问题答案: 类变量 被 实例属性 遮盖 。这意味着在
我在Java中读到了关于将超类变量类型化为子类的知识,反之亦然。请告诉我哪些是有效的? 动物是超级类,有猫和狗子类。
我的子类是,我需要在我的超类中使用字段和。我知道如何在子类中使用超类变量,但我必须学会如何做相反的事情?谢谢。
问题内容: 一本书的引用: 如果要从超类的变量引用的对象中调用由子类定义的方法,该怎么办?假定SoftBall类具有一个名为BallBall类未定义的方法riseBall。如何从Ball变量中调用它?一种方法是创建子类的变量,然后使用赋值语句强制转换对象: 在上面的代码片段中,它显示了一个新的 Softball 对象,该对象正在创建并分配为对变量 b 的引用,这是完全合法的,因为类 Softbal
在上面的代码片段中,它显示了一个新的Switterball对象被创建并赋值为变量b的引用,这是完全合法的,因为Switterball类是Ball类的子类。但是引号(间接地)指出,在使用该变量从垒球类调用方法之前,必须将该变量强制转换为垒球类型。为什么会这样?为什么我不能直接使用Ball类型的变量b(它包含对垒球对象的引用)来调用所需的方法?变量b已经有了对象。 (注:我已经读过这篇文章了。)
我得到了这个错误: “变量'a'已赋值,但其值永远不可用”