【问题标题】:Variable not initialized and hides in field变量未初始化并隐藏在字段中
【发布时间】:2016-06-13 23:25:12
【问题描述】:

我对 java 还很陌生,所以我不明白为什么会出现初始化错误。在代码中,我的整数“Memes”表示它可能尚未初始化并且局部变量隐藏在字段中。

 private void totalUpdate(int yes){


     if (yes==1){
             int CompBot = Integer.parseInt(lblbotComp.getText());
     int CompTop = Integer.parseInt(lbltopComp.getText());
     int CompMid = Integer.parseInt(lblmidComp.getText());

                int Memes = Memes + CompBot + CompTop + CompMid;
          lbltotalComp.setText("Computer has earned "+ Memes +" points in total");
}
    }
 private void pointUpdate(int points){
     pointsUser = pointsUser + points ;
     lbluserPointsEst.setText (""+pointsUser+"");
 }

 private void computerPointUpdate(int pointComp){
     pointsComputer = pointsComputer + pointComp ;
     lblcompPointsEst.setText (""+pointsComputer+"");
 }

 private int play(int points){
int score;
int randomScore = (int)((100 -1 +1)*Math.random() +1);
 if (randomScore < points){
     score = points;
     }
    else{
   score = 100;
    }

return score;
 }

 private int playComp(int pointsComp){
int score;
int randomScore = (int)((100 -1 +1)*Math.random() +1);
 if (randomScore < pointsComp){
     score = pointsComp;
     }
    else{
   score = 100;
    }

  return score;
 }

        private int Memes = 0;
        private final Timer messageTimer;
        private int pointsComputer = 0;
        private int pointsUser = 0;
        private int count;

【问题讨论】:

    标签: java variables netbeans initialization


    【解决方案1】:

    您收到此警告是因为您的类定义中有 private int Memes,并且在 totalUpdate() 中声明了变量 int Memes

    如何解决它取决于你想要什么:

    如果您希望totalUpdate() 更新对象中Memes 的值,请在相关行中省略int,如下所示:

    Memes = Memes + CompBot + CompTop + CompMid;

    如果要声明一个新的局部变量,最好给它一个不同的名字:

    int localMemes = Memes + CompBot + CompTop + CompMid;

    【讨论】:

      【解决方案2】:

      当你这样做时

      int Memes = Memes + CompBot + CompTop + CompMid;
      

      Java 将其视为一个新变量的声明,它隐藏了字段

      private int Memes = 0;
      

      您似乎想初始化 Memes 字段。为此,请将int 放在作业前面:

      Memes = Memes + CompBot + CompTop + CompMid;
      

      【讨论】:

        【解决方案3】:

        大概在这一行:

        int Memes = Memes + CompBot + CompTop + CompMid;
        

        变量“Memes”可以是在方法 totalUpdate() 中定义的变量,也可以是对象的属性。所以解析器会感到困惑。

        尝试将变量的名称更改为 localMemes 之类的名称。

        另外,由于您是 Java 新手,我建议您阅读这篇关于命名约定的文章:http://www.oracle.com/technetwork/java/codeconventions-135099.html

        【讨论】:

          【解决方案4】:

          在字段级别声明“模因”:

          int Memes = 0; //for example
          

          然后

          Memes += CompBot + CompTop + CompMid;
          

          整数/对象的小写名称也有助于类名的可读性。

          memes += compBot + compTop + compMid;
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2020-12-26
            • 2021-09-02
            • 2015-12-29
            • 2016-07-31
            • 1970-01-01
            • 1970-01-01
            • 2016-03-01
            相关资源
            最近更新 更多