私有方法:描述错误

时间:2014-01-01 23:28:52

标签: java methods private bluej

我正在进行以下任务:尝试moveOn或backUp或在非法时评估seesCD会导致突然的System.exit(0),而无需解释。在这种情况下,用户会欣赏跟踪输出。修改这三个方法以调用解释问题的私有方法(使用showMessageDialog),然后终止。

我编写了以下代码(请向下滚动代码):

   import java.util.*;
 import java.awt.*;
  import javax.swing.*;

  public class Vic extends Object
   {
  private static final String NONE = "0";
  /////////////////////////////////
  private String itsSequence = "";
  private int itsPos = 1;
          private final int itsID; // assigned by the constructor
  private void trace (String action)

    {

   System.out.println ("Vic# " + itsID + ": " + action

    + itsPos + "; sequence= " + itsSequence);

      } //======================



      public void backUp()

       {

       if (itsPos == 1)

      error("Could not backUp");

      itsPos--;

      trace ("backUp to slot ");

     } //======================



     public void moveOn()

     {

       if ( ! seesSlot())

       error("Could not moveOn");

        itsPos++;

        trace ("moveOn to slot ");

    } //======================



     public boolean seesSlot()

     {

    return itsPos < itsSequence.length();

    } //======================



    public boolean seesCD()

      {

    if ( ! seesSlot())

    error("Can't see CD, there is no slot");

 String s = itsSequence.substring (itsPos, itsPos + 1);

   return ! s.equals (NONE);

       } //======================



     private void error(String message)

      {

       JOptionPane.showMessageDialog(null, "ERROR: " + message);

      System.exit(0);

     }
     }

编译时收到以下错误消息:

“变量itsID可能尚未初始化”。 这一行突出显示。“公共类Vic扩展对象”

2 个答案:

答案 0 :(得分:1)

问题是你有一个final实例变量(这意味着它必须在构造期间只分配一次值),但你没有一个构造函数实际将它分配到任何地方。

有一条评论说明在该字段上由构造函数分配,但是没有明确的构造函数。也许您应该编写一个,或者在将此代码转换为赋值的过程中将其删除。

答案 1 :(得分:-1)

itsId未设置在任何地方,这解释了您的错误。

但总的来说,这种类型的问题是通过try和catch块以及抛出的错误来解决的。我相信你即将了解这些。