请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

无法使用data[i]

      底层是跟着老师写的动态数组。
      
      private Array<E> data;
   public MaxHeap(int capacity){
       data=new Array<>(capacity);
   }
   public MaxHeap(){
       data=new Array<>();
   }
      
      以下代码出现问题
       E t=data[i]; //The type of the expression must be an array type but it resolved to Array<E>
       data[i]=data[j];
       data[j]=t;
       
   The type of the expression must be an array type but it resolved to Array<E>
鼠标悬停在data[i]出现以上字段.

使用data.get(i)=data.get(j)时也出现错误


正在回答

2回答

在C++中,如果在自己的类中,想使用'[]'语法,需要重载[]运算符:)Java语言没有运算符重载的语法,所以不支持这个语法:)


data.get(i)=data.get(j) 一句话,你想要给data的i位置的元素赋值为data[j],应该使用data的set方法。


你现在的写法相当于左边取出了data中i位置的元素a;右边取出了data中j位置的元素b。然后把b赋值给a,但是a根本不是变量:)


课程的所有代码都可以通过官方github获得,可以参考。传送门:https://github.com/liuyubobobo/Play-with-Data-Structures


加油!:)

1 回复 有任何疑惑可以回复我~
  • 提问者 慕设计7897213 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2018-08-16 10:06:06
  • Declee #2
    如果想在堆这个类直接添加swap方法,而不是在array类中添加的话,可以这样
    
    public void swap(int i, int k) {
    
    E temp = data.get(k);
    
    data.set(k, data.get(i));
    
    data.set(i, temp); 
    
    }
    回复 有任何疑惑可以回复我~ 2019-11-06 12:06:11
提问者 慕设计7897213 2018-08-15 17:28:16
QAQ ,已解决,Swap方法需要写在Array数组下。


0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信