为什么我的 2048 风格的游戏在 128 之后就停止工作了?

问题描述

为了好玩,我正在制作一个 2048 风格的组合显示程序。每个外循环,它都会向整数数组列表的 0 索引添加 2。在内部 for 循环中,它检查索引的值是否与其上方索引的值相同;如果是,则将 indexi+1 的值加倍并删除索引 i。
对于前几个循环,输出工作正常。但是,一旦我们到达第一个 128,它仍然有效,但是下次我们得到 128 时,它不会将它们组合成 256,它只是将两个 128 留在数组的末尾。
我认为问题与代码不再将 128 识别为等于 128 有关,因为它在应该进入它的时候跳过了那个 if 语句,但我不确定。
它目前无限循环;稍后会添加用户交互和退出语句。
代码


public class Main {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        ArrayList<Integer> intArray = new ArrayList();
        Boolean quit = false; 
        while (quit == false) {
            intArray.add(0,2);
            for (int i=0; i<intArray.size();i++) {
                try {
                    if (intArray.get(i) ==  intArray.get(i+1)) {
                        intArray.set(i+1,(intArray.get(i)*2));
                        intArray.remove(i);
                    }
                }
                catch (IndexOutOfBoundsException e) {
                }
            }
            for (int a : intArray) {
                System.out.print(a + "  ");
            }
            System.out.println();
        }
    }
}

输出

4  16  16  32  64  128  
2  4  32  32  64  128  
4  4  64  64  128  
2  8  128  128  
4  8  128  128  
2  4  8  128  128  
4  4  8  128  128  
2  8  8  128  128  
4  16  128  128  

请注意,两个 64 的组合形成了第二个 128,但是 那些 128 并没有按照它们应有的方式组合。
整数在达到一定大小后会停止正确比较吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...