为什么我的分数变量在我的GameScreen课程之外无法评估?

时间:2013-09-11 06:43:39

标签: java swing class netbeans protected

不同类别

package battleship;


public class GameSum extends javax.swing.JFrame {


    public GameSum() {
        initComponents();
        J_time.setText(score);
    }



package battleship;

public class GameScreen extends javax.swing.JFrame {


    protected int score;

    public GameScreen() {
        initComponents();

    }   
private void B_checkActionPerformed(java.awt.event.ActionEvent evt) {                                        

       if (score < getHS(0) && score < hs[1])  {setHS(0, score, nickname);  }
       for (int loop = 0; loop<5; loop++)
       {
       if(score > hs[loop] && score < hs[loop+1]) {setHS(loop+1, score, nickname); }   
       }
    }  

3 个答案:

答案 0 :(得分:2)

因为您的变量不公开,或者没有可用的公共getter。

在Gamescreen中只需:

public int getScore() {
    return score;
}

在GameSum中调用此函数。

顺便说一句,我不想​​听起来很粗鲁,但如果这是你真正的缩进/代码约定,它真的是不可靠的。 尝试正确缩进,如果使用大括号,则将if的内容放在新行上,如果是单行块,则放在没有大括号的同一行上。只是我的两分钱。

答案 1 :(得分:0)

你应该在Java中担任access modifiers总统职位。您必须创建一种访问变量的方法(创建public seter和public getter)或创建变量public

请点击此链接查询access modifiers

答案 2 :(得分:0)

您的分数变量是protected,这意味着它只能通过(Gamescreen)访问同一个包中的子类和类 请仔细阅读https://stackoverflow.com/a/215505/2291134