当前位置: 首页 > 知识库问答 >
问题:

不是退出“while”循环,但为什么?

经佐
2023-03-14

所以我这里有一个程序,它只是简单地模仿跳棋(但不是跳,而是一个棋子简单地“吃掉”另一个棋子)。我有一个简单的类,它实现了一个“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类中的count方法如下所示:

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”的值,这样它就可以向“chips”报告,以决定chips[1]和chips[0]是否都大于1(它们在板上都至少有一个白片或黑片)数组只应由两个值组成(即{white,black};)我尝试过以各种方式重新设置整个count()的格式,但这只是代码编译的几种方式之一。

以下是输出:

01234567

0........

1..B...

正如你所看到的,没有白色的碎片了(应该是在顶部)。我会很感激帮助,考虑到这可能是一个容易的解决办法,盯着我的鼻子,但它是恼人的,所以我希望我解释的足够好。谢谢你。

哦顺便说一句,我被告知不要碰主要的方法。

共有1个答案

漆雕疏珂
2023-03-14

你正在丢弃循环中的芯片数...更改行:

c.count();

进入:

chips = c.count();
 类似资料:
  • //在下面的程序中,在内部,当用户收到指令时,他可以简单地进入哨兵退出while循环,但是,当您得到希望购买的票的结果时,按999并不退出程序

  • 问题内容: 在下面的代码中,我希望循环在+ + =时立即退出。但是,使用语句进行测试表明它一直持续到循环完成为止。我尝试过,然后在语句集中进行设置,但这会导致无限循环。我认为使用然后设置可能有效,但也可以一直运行到循环结束为止。什么是最优雅,最快的退出方式?谢谢。 问题答案: 该循环将只匹配条件时,当控制返回到它,即循环完全执行。因此,这就是即使满足条件也不会立即退出程序的原因。 但是,如果条件没

  • 出现的问题是,当用户确实输入了一个正数时,它仍然忽略输入,并要求用户再次输入一个正整数。我想我只是没有正确退出循环,但我不确定是如何退出的。

  • 问题内容: 我正在尝试通过按键盘上的键来使while循环中断。我的代码是: 问题答案: 请勿使用循环获取输入,或。您真正想要的是一行输入,然后将其拆分为一个双打列表。因此,请使用,拆分并解析每个项目。像这样: 这忽略了任何形式的输入验证,但显示了一种通用方法。 这将起作用,因为一旦您单击“ enter”(输入),它将结束第一行,这意味着扫描程序可以越过进入代码的大部分。由于您再也不会尝试阅读任何内

  • 编辑:该问题与fscanf的while循环没有直接关系,而是在用于包含使用fscanf加载的变量的结构的分配中出现了错误 我正在从文件中读取值,并使用它们在使用fscanf的结构中设置参数。我使用Eclipse作为编辑器,并将其调试和gcc作为编译器(从Eclipse内部)。 我下面介绍的由三部分组成:1)我从文件中读入变量的结构的声明。2)我正在读取的文件,以及3)实际从文件中读取的代码。 在所

  • 我有以下代码来下载通过TCP传输的文件: 一旦所有的字节都被处理了(它们总是被处理的,它像正常的一样工作,只是不退出循环),文件就被创建了,没有一个问题,但是,循环没有退出。