在java中使用字符串发生奇怪的事情

时间:2017-02-27 19:52:36

标签: java arrays string debugging linked-list

在开始之前,我应该先说明我是学生的事实,这是为了一项任务。我需要帮助了解哪些内容出错以及如何修复,但我不想让代码段告诉我该怎么做。

所以,我试图解决一个16块拼图。我使用迭代深化来找到最佳解决方案,并且我正在测试nextConfigs方法以找到拼图可以移动到的位置。

private static LinkedList<Puzzle> nextConfigs(Puzzle start) {
    LinkedList<Puzzle> nextPuzzles = new LinkedList<Puzzle>();
    Puzzle wlast = start; //creates a copy of 'last'(start) for working with to get up
    //System.out.println("Debug 1");
    if(wlast.hasUp()){
        wlast.moveUp();
        nextPuzzles.add(wlast);
        System.out.println("Debug 11 " + wlast.toString());
        wlast = start; //resets working copy
    }
    if(wlast.hasRight()){
        wlast.moveRight();
        nextPuzzles.add(wlast);
        System.out.println("Debug 12 " + wlast.toString());
        wlast = start; //resets working copy
    }
    if(wlast.hasDown()){
        wlast.moveDown();
        nextPuzzles.add(wlast);
        System.out.println("Debug 13 " + wlast.toString());
        wlast = start; //resets working copy
    }
    if(wlast.hasLeft()){
        wlast.moveLeft();
        nextPuzzles.add(wlast);
        System.out.println("Debug 14 " + wlast.toString());
        wlast = start; //resets working copy
    }
    System.out.println("Debug 7: next configs contains: " + nextPuzzles.toString());
    for(Puzzle next: nextPuzzles){
        System.out.println("Debug 7.2 next configs contains " + next.toString());
    }
    return nextPuzzles;
}

问题是,它返回了一些奇怪的值。使用测试难题_aaabbbbccccdddd,它将以下内容打印到控制台(我用它来帮助调试);

Debug 12 a_aabbbbccccdddd
Debug 13 abaab_bbccccdddd
Debug 14 abaa_bbbccccdddd
Debug 7: next configs contains: [abaa_bbbccccdddd, abaa_bbbccccdddd, abaa_bbbccccdddd]
Debug 7.2 next configs contains abaa_bbbccccdddd
Debug 7.2 next configs contains abaa_bbbccccdddd
Debug 7.2 next configs contains abaa_bbbccccdddd

Puzzle类包含一个包含拼图状态的字符串,以及一个要编辑的字符数组(由toCharArray方法创建)。 hasUp等检查在给定方向上移动是否有效,并向上移动等等,通过编辑数组然后将字符串设置为等于从数组创建的新字符串(puzzle = new String(wpuzzle))。我已经没有办法解决这个问题。

如果有人能看到任何我做错的事情,或者对可能造成这种情况的原因提出建议,我会很感激。我已经测试了hasUp等和Moveup等方法,以确保它们能够正常工作,并且确实可以使用。

0 个答案:

没有答案