首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数组列表故障

数组列表故障
EN

Stack Overflow用户
提问于 2014-01-30 05:03:33
回答 1查看 77关注 0票数 0

我目前正在制作一个绘画程序,并正在实现撤消和重做功能。到目前为止,如果我删除了重做部分的代码,它可以工作,但由于某些原因,如果我重新添加重做代码,它只会抛出arrayOutOfIndex异常或NullPointer。我什么都试过了,不知道还能做什么!

很抱歉,如果这个问题非常简单,我只是一个初学者。

代码:

代码语言:javascript
复制
    public void redo()
{

    for(int i = 0; i < 3; i++ ){

        if(redo[0].get(0)!=null){
            al.add((Shape) redo[0].get(redo[0].size()-1));
            cl.add((Color) redo[1].get(redo[1].size()-1));
            tl.add((Integer) redo[2].get(redo[2].size()-1));
            lineEnd.add((Integer) redo[3].get(redo[3].size()-1));
            junction.add((Component) redo[4].get(redo[4].size()-1));
        }

    redo[0].remove(redo[0].size()-1);
    redo[1].remove(redo[1].size()-1);
    redo[2].remove(redo[2].size()-1);
    redo[3].remove(redo[3].size()-1);
    redo[4].remove(redo[4].size()-1);
    }
    repaint();

}
public void undo()
{
    for(int i = 0; i < 3; i++ ){

        Shape alComponent = al.get(al.size()-1);
        Color clComponent = cl.get(cl.size()-1);
        Integer tlComponent = tl.get(tl.size()-1);
        Integer lineEndComponent = lineEnd.get(lineEnd.size()-1);
        Integer junctionComponent = juncture.get(juncture.size()-1);

        if(al.get(0)!=null){
            redo[0].add(alComponent);
            redo[1].add(clComponent);
            redo[2].add(tlComponent);
            redo[3].add(lineEndComponent);
            redo[4].add(junctionComponent);
        }


    al.remove(al.size()-1);
    cl.remove(cl.size()-1);
    tl.remove(tl.size()-1);
    lineEnd.remove(lineEnd.size()-1);
    juncture.remove(juncture.size()-1);
    }
    repaint();
}   

另外,我有一个for循环,因为如果你按下它一次,画上的变化是很小的。

EN

回答 1

Stack Overflow用户

发布于 2014-01-30 05:18:01

在你的重做循环中,你

check an the >检查是否存在可重做的项并重做如果可以,请从重做列表中删除项then

  • (unconditionally)

remove()%s移动到if块中。

另外,不要使用五个数组。创建一个具有良好名称的重做列表来为您完成所有这些工作的类。(这只是一个提示,与你的问题无关。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21442603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档