没有退出“while”循环,但为什么呢?

时间:2013-08-03 19:39:41

标签: java arrays while-loop

所以我在这里有一个简单模仿跳棋的程序(但不是跳跃,一件只是“吃掉”另一件)。我有一个实现“Checkers”类对象的简单类,并创建一个名为“chips”的int数组变量,有一个“WHILE”语句创建一个循环,而chip [0]和chips [1]整数大于0。它看起来像这样:

public static void main(String [] args){

        Checkers c = new Checkers();
        c.init();
        c.printBoard();
        int[] chips = c.count();
        Scanner kbd = new Scanner(System.in);
        while(chips[0]>0 && chips[1]>0){
            System.out.println("\nYour move? 4 ints: src row, src col, dest row, dest col separated by [SPACE]");
            int srcR = kbd.nextInt();
            int srcC = kbd.nextInt();
            int destR = kbd.nextInt();
            int destC = kbd.nextInt();
            kbd.nextLine();
            c.move(srcR,srcC,destR,destC);
            c.printBoard();
            System.out.println(c.getMessage());
            c.count();
        }
    }

Checkers课程中的计数方法如下所示:

public int[] count() {  

    int wht=0;
    int blk=0;

    System.out.println();

    for(int i=0; i<board.length;i++)    {
        for(int z=0; z<board[0].length;z++)     {
            if(board[i][z] instanceof White)    {
                wht++;
            }
            else if(board[i][z] instanceof Black)   {
                blk++;
            }
        }
    }

    int[] arr = {wht,blk};  
    System.out.println("Whites: "+wht+"\nBlacks: "+blk);    


    return arr;   
}

电路板是8 x 8(这是board.length是什么),计数方法只是返回“arr”的值,以便它可以报告回“芯片”以决定芯片是否[ 1]和筹码[0]都大于1(它们都在板上至少有一个白色或黑色棋子。)阵列只应该由两个值组成(即。{white,black};)I尝试以各种方式重新格式化整个count(),但这只是代码编译的几种方式之一。

这是输出:

01234567

0 | ........

1 | ..B .....

2 | ........

3 | ........

4 | ........

5 |。..B.B.B

6 | .B.B.B.B

正如你所看到的,不再有白色碎片(应该在顶部)。我很感激帮助,因为这可能是一个简单的解决方案,正好在我的鼻子下面,但它很烦人,所以我希望我解释得这么好。谢谢。

哦,顺便说一下,我被告知不要触摸主要方法。

1 个答案:

答案 0 :(得分:5)

你丢掉了循环中的筹码数量...... 换行:

c.count();

成:

chips = c.count();