如何解决为什么我的 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 举报,一经查实,本站将立刻删除。