永发信息网

哪位高手帮我看一下这道java题。

答案:2  悬赏:0  手机版
解决时间 2021-06-03 11:05
我运行了很多次,有十几个错误,基本上错误的类型有一样,我是个java初学者,还有很多东西都不会,请前辈们多多指教,谢谢!
最佳答案

有一个大括号位置有问题,另外,CharList类的构造逻辑有问题,应该使用私有变量head而不应该使用过程作用域变量ListCell head


----------


输出结果是下面的么?


a+=(A B D E F)
(B D E F)
a+=(A B C D E F)
a+=(C D F)
a+=(D F)
link+=(a u s)
link+=(a u e w s)

全部回答

在CharList类的最后少了一个},导致无法编译,

加上}后编译通过,运行报找不到main方法,原因是public 类是CharList,而非TestCharList,因此把main方法放回CharList类中;

再次编译运行,执行到a.insert('C',lp);时报空指针异常,原因是a.putOn('A')时把B元素替换了,在CharList里找不到B,导致lp为空指针,于是将本句注释。。

请看黑体部分:

class ListCell { public ListCell(char c, ListCell cell) { item=c; next=cell; }

char content() { return item; }

char item='\0';

ListCell next=null; }

public class CharList { public CharList() {}

public CharList(char c) { ListCell head = new ListCell(c,null); }

public ListCell first() { return head; }

public boolean isEmpty() { return head==null; }

private ListCell head=null;

public ListCell last() { ListCell p=head; while(p!=null&&p.next!=null) p=p.next; return p; }

public ListCell find(char c) { for(ListCell p=head;p!=null;p=p.next) if(p.item==c) return p; return null; }

public boolean substitute(char r,char s) { ListCell p=find(s); if(p==null) return false; p.item=r; return true; }

public int shorten(int n) { while(head!=null&&n-->0) head=head.next; return -n; }

public int remove(char c) { ListCell p=head; int count=0; if(p==null) return count; while(p.next!=null) { if((p.next).item==c) { count++; p.next=(p.next).next; } else p=p.next; } if(head.item==c) { head=head.next; count++; } return count; }

public void putOn(char c) { head=new ListCell(c,head);}

public void insert(char c, ListCell e) { e.next=new ListCell(c,e.next);}

public void append(char c) { insert(c,last());}

public String toString() { return toString(head);}

public String toString(ListCell p) { String s="("; while(p!=null) { s=s+p.item; if((p=p.next)!=null) s=s+" "; } return s+")";

}

//} //class TestCharList //{ public static void main(String[] args) { CharList a=new CharList('B'); a.putOn('A'); // 这里把原来的B覆盖了 a.append('D');a.append('E');a.append('F'); System.out.println("a+="+a); ListCell lp=a.find('B'); // 此时找不到B,lp为空 System.out.println(a.toString(lp)); //a.insert('C',lp); // 由于lp为空 这里会报错 System.out.println("a+="+a); a.remove('E'); a.shorten(2); System.out.println("a+="+a); a.remove('C'); System.out.println("a+="+a);

CharList link=new CharList('s'); link.putOn('u'); link.putOn('a'); System.out.println("link+="+link); ListCell l=link.find('u'); link.insert('e',l); ListCell p=link.find('e'); link.insert('w',p); System.out.println("link+="+link);

} }

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
qq会员怎么退订啊
找几个在网上买东西的网站 要信誉高哦!
周杰伦的家庭住址?
酷我音乐盒下的歌曲移动到手机上为什么播放时
一学期还没上完可以转学吗
平子真子卍解是什么?
手掌和面部发黄是怎么回事?
求1000元主机配置
助残车要不要挂牌
我的手机是接收不到的想在网上查看
我答应你不苦也不闹,只要你一起陪我到老”这
真的是“男人不坏女人不爱”吗?
前面板有声音 后面板没声音
这样算不算喜欢
为什么QQ音乐下歌时一直是这样??
推荐资讯
希望能认识个电脑操作好的人(实用操作或维修
女贼宝宝怎样加点最佳?
宇宙有多大rtg
怎么用直连器连实况2009
炫舞里草莓午夜该怎么配才好看(配图片)
现在的80后和90后想要些什么?
新中国象棋如何重新安装?
哪有家电维修类的书籍卖呀
浏览器:Mozilla/4.0 (compatible; MSIE 7.0;
请问一下如果是中晚期是否还能治
QQ三国为什么交易不起元神?
蔡甸区武汉凤铝门窗(汉阳大道辅路)在哪里啊,
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?