【问题标题】:Java charAt error: cannot find symbolJava charAt 错误:找不到符号
【发布时间】:2013-11-08 00:37:29
【问题描述】:

我在为链接列表项目编写构造函数时遇到了问题,并且似乎无法弄清楚为什么 charAt 在这种情况下不起作用。我收到一个错误:在调用 charAt 时找不到符号。

   //copy
    public Project123(Project123 s){
        this.head = null;
        for (int i = s.length()-1; i>=0; i--){
            head = new charNode (s.charAt(i), head);
            }
        }
   //constructor
    public Project123(String s){
        this.head = null;
        for (int i = s.length()-1; i>=0; i--){
            head = new charNode (s.charAt(i), head);
            }
        }

我似乎没有与其他相关帖子相同的问题。它是小写的,似乎也被正确调用了。如果需要更多上下文,我会发布更多。

【问题讨论】:

  • 不要将你的班级命名为Object
  • 它实际上不在项目中。为了理智,我会改变。

标签: java string linked-list char copy-constructor


【解决方案1】:

你的两个方法实际上是构造函数。首先,s 被声明为Project123,而不是String。所以,它没有charAt 方法。实际上,您的(新更改的)复制构造函数需要不同的技术来克隆它。获取列表中的每个节点,克隆它,然后使用克隆。我不是要使用Cloneable

哦,将charNode 更改为CharNode,并将Project123 更改为CharLinkedList 或类似的东西。

【讨论】:

    【解决方案2】:

    Project123 不是字符串,因此它没有字符串方法。

    但是你重复了自己,这无论如何都是糟糕的编码,所以我会链接我的构造函数:

    public Project123(Project123 p) {
        this(p.node.str); // not sure what you've called fields
    }
    

    这里假设node 是保存值的字段的名称。

    【讨论】:

      【解决方案3】:

      s.charAt(i) 中的第一个“s”不是字符串,而是 Project123。第二个应该没问题。只需更改:

      public Project123(Project123 s){
      

      public Project123(String s){
      

      【讨论】:

      • 那它就不是拷贝构造函数了。
      【解决方案4】:

      在:

        public Project123(Project123 s){
          this.head = null;
          for (int i = s.length()-1; i>=0; i--){
              head = new charNode (s.charAt(i), head);
              }
          }
      

      s.charAt(i)

      这里的 s 不是一个字符串,所以你不能在它上面使用字符串方法——不会工作。

      而不是在该复制构造函数中,遍历复制节点的节点。深拷贝还是浅拷贝,由你决定。

      【讨论】:

      • 好的,我明白了。然后我可以做一些类似 head = new charNode (s.getChar(), head); 的事情吗? ?
      • @user2210274:试试看。
      • 我在 charNode 类文件中有一个 getChar() 方法返回字母。它给出了一个错误:找不到符号。这不应该因为 Project123 在这种情况下是一个 charNode 吗?
      • @user2210274:Project123 扩展了 charNode?我在想,它可能不应该这样做。
      • 不,我不这么认为。据我了解,构造函数将传入的字符串转换为一系列 charNode,即“test”转换为 [t]->[e] 等。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-20
      • 2013-12-06
      • 2016-07-22
      • 2013-11-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多