如何让计数器在while循环中工作?

时间:2013-10-02 23:46:16

标签: java

所以我试着让我们说int Posx;保持一个数字,然后当用户浏览菜单时,根据他们选择的内容,将{0}或-1添加到{{1} }。在添加或减去数字后,我无法让int Posx保留数字。我正在尝试浏览一个数组,我想保留2个整数作为标记,让我知道我目前在数组中的x和y。

tl; dr如何在do / while循环中保留一个计数器?

以下是问题所在:

Posx

非常感谢任何想法,提示或技巧。

1 个答案:

答案 0 :(得分:5)

我认为问题在于这两行

    //Array to hold the position. 
    int Posx = 0;
    int Posy = 0;   

您每次迭代都会重置Posx和Posy。尝试将它们设置在while循环之外。像这样(你不想一遍又一遍地初始化它们)。对于movx和movy也是如此:

//arrays to hold the direction.
int[] movx ={ -1,  0, 0, 1};
int[] movy ={ 0, -1, 1,  0};

//Array to hold the position. 
int Posx = 0;
int Posy = 0;       

do {
    //Print out the array
    for (int x = 0; x < maze.length; x++) {
    ...
    ...

为了提高代码的可读性,您可以查看switch statement并尝试删除多个continue语句:

    switch(usrAns) {
        case 1:
            if(check(Posx, Posy, maze, movx[1], movy[1])){
                System.out.println("Cannot move past cave boundary! Try something else.\n");
            }
            else{
                Posy = Posy - 1;
                System.out.printf("This is Posx %d and Posy %d\n", Posx, Posy);
            }
            break;
        case 2:
        ...
        ...
        default:
            while (usrAns >= 5 || usrAns < 0){
                System.out.println("Please enter a number between 0 and 4:\n");
                usrAns = sc2.nextInt();
                if (usrAns == 0){
                    System.out.println("Bye!\n");
                    found = false;
                    break;
                }
            }
            break;
         }