Java 程序在创建数组的新实例时冻结 package net.gfx; 公共类TileSet{ 公共最终积分=627; 类瓷砖{ int x=0,y=0; int w=0,h=0; } 公共瓷砖[]=新瓷砖[瓷砖]; 公共瓷砖集(){ 对于(int i=0,y=0;i1280的情况,因为每次通过循环(第一个循环除外)x都是25。如果希望通过循环每次增加x 25,则应使用+=运算符。
我想做的基本上是在屏幕上创建一个瓷砖阵列。我已经修复了我在这里遇到的原始错误Java 程序在创建数组的新实例时冻结 package net.gfx; 公共类TileSet{ 公共最终积分=627; 类瓷砖{ int x=0,y=0; int w=0,h=0; } 公共瓷砖[]=新瓷砖[瓷砖]; 公共瓷砖集(){ 对于(int i=0,y=0;i1280的情况,因为每次通过循环(第一个循环除外)x都是25。如果希望通过循环每次增加x 25,则应使用+=运算符。,java,arrays,Java,Arrays,我想做的基本上是在屏幕上创建一个瓷砖阵列。我已经修复了我在这里遇到的原始错误 但现在当我运行它时,它冻结了。更多详细信息请参见代码。=+不是java运算符。每次在x循环中将x设置为值25。因此,您永远不会进入x>1280的情况,因为每次通过循环(第一个循环除外)x都是25。如果希望通过循环每次增加x 25,则应使用+=运算符。=+不是java运算符。每次在x循环中将x设置为值25。因此,您永远不会进入x>1280的情况,因为每次通过循环(第一个循环除外)x都是25。如果希望通过循环每次增加x 2
但现在当我运行它时,它冻结了。更多详细信息请参见代码。=+不是java运算符。每次在x循环中将x设置为值25。因此,您永远不会进入x>1280的情况,因为每次通过循环(第一个循环除外)x都是25。如果希望通过循环每次增加x 25,则应使用+=运算符。=+不是java运算符。每次在x循环中将x设置为值25。因此,您永远不会进入x>1280的情况,因为每次通过循环(第一个循环除外)x都是25。如果希望通过循环每次增加x 25,则应使用+=运算符。for的最后一个子句就是问题所在。它是
x=+25
。如果我们稍微晃动一下空格,就会发现它与x=+25
相同。是,每次,x
都设置为正25。你把=
和+
搞错了。如果您将其替换为x+=25
,您的问题应该得到解决。for的最后一条是问题。它是x=+25
。如果我们稍微晃动一下空格,就会发现它与x=+25
相同。是,每次,x
都设置为正25。你把=
和+
搞错了。如果将其替换为x+=25
,则问题应该得到解决。平铺类中没有默认构造函数。@progenhard是的,他有。“冻结”?您确定它没有引发异常,可能是ArrayIndexOutOfBoundsException
?在循环中将x设置为正25。你可能想增加它。@chrylis他永远不会越界,因为他在内部循环中是无限的。他每次都会设置数组的第0个索引,因为我从不递增。平铺类中没有默认构造函数。@progenhard是的,他有。“冻结”?您确定它没有引发异常,可能是ArrayIndexOutOfBoundsException
?在循环中将x设置为正25。你可能想增加它。@chrylis他永远不会越界,因为他在内部循环中是无限的。他每次都会设置数组的第0个索引,因为我从不递增。你发现我爱你真是太棒了!:DYou还应该知道,即使使用+=运算符,在测试x>1280的循环中,您也永远不会遇到内部条件。您发现这一点非常了不起,我爱您!:DYou还应该知道,即使使用+=操作符,在测试x>1280的循环中,您也永远不会遇到内部条件。
package net.gfx;
public class TileSet {
public final int TILES = 627;
class Tiles {
int x = 0, y = 0;
int w = 0, h = 0;
}
public Tiles tiles[] = new Tiles[TILES];
public TileSet() {
for (int i = 0, y = 0; i < TILES; i++) {
for (int x = 0; x < 1280; x =+ 25) {
if (x > 1280) {
x = 0;
y += 40;
}
tiles[i] = new Tiles(); //Program Freezes here
tiles[i].x = x;
tiles[i].y = y;
tiles[i].w = 40;
tiles[i].h = 40;
}
}
}
}