有人能帮我理解为什么我的for循环不能在Java中工作(对于拼字游戏)?

有人能帮我理解为什么我的for循环不能在Java中工作(对于拼字游戏)?,java,loops,Java,Loops,下面是我试图写一个方法来创建一个由七个字母组成的框架。似乎我的for循环的措辞不正确,因此无法产生预期的结果。通过多次尝试,我要么发现了各种各样的错误,要么七块瓷砖都出现了相同的字母 public static Tile [] makeRack(Tile [] tileBag) throws FileNotFoundException { // create a Tile array called rack that can hold 7 tiles Tile [

下面是我试图写一个方法来创建一个由七个字母组成的框架。似乎我的for循环的措辞不正确,因此无法产生预期的结果。通过多次尝试,我要么发现了各种各样的错误,要么七块瓷砖都出现了相同的字母

public static Tile [] makeRack(Tile [] tileBag)
        throws FileNotFoundException
{
    // create a Tile array called rack that can hold 7 tiles
    Tile [] tiles = new Tile[7];

    // make a for loop that starts with int k=0 and repeats 7 times
    int x = (int)(Math.random()*100);
    for(int k = 0; k < 7; k++)
   {
    char c = getLetter(x);
    int val = getValue(c);
    tiles[k] = new Tile(c,val);

   }
   return tiles;
}    
publicstatictile[]makeRack(Tile[]tileBag)
抛出FileNotFoundException
{
//创建一个名为rack的磁贴阵列,可容纳7个磁贴
瓷砖[]瓷砖=新瓷砖[7];
//创建一个以int k=0开始并重复7次的for循环
int x=(int)(Math.random()*100);
对于(int k=0;k<7;k++)
{
char c=getLetter(x);
int val=getValue(c);
瓷砖[k]=新瓷砖(c,val);
}
返回瓷砖;
}    

您没有包含所有代码,因此我假设
getLetter()
是从整数到字符的直接转换

在循环外调用
Math.random()
时,您会得到一个(单个)随机数,分配给
x
。从那时起,
x
不会改变,因此您将得到一个包含7个相同字母的机架


要解决此问题,请将
x
的初始化移动到
for
循环中。这样,您将调用
Math.random()
7次,而不是只调用一次。

您还没有包含所有代码,因此我假设
getLetter()
是从整数到字符的直接转换

在循环外调用
Math.random()
时,您会得到一个(单个)随机数,分配给
x
。从那时起,
x
不会改变,因此您将得到一个包含7个相同字母的机架


要解决此问题,请将
x
的初始化移动到
for
循环中。这样,您将调用
Math.random()
7次,而不是只调用一次。

您还没有包含所有代码,因此我假设
getLetter()
是从整数到字符的直接转换

在循环外调用
Math.random()
时,您会得到一个(单个)随机数,分配给
x
。从那时起,
x
不会改变,因此您将得到一个包含7个相同字母的机架


要解决此问题,请将
x
的初始化移动到
for
循环中。这样,您将调用
Math.random()
7次,而不是只调用一次。

您还没有包含所有代码,因此我假设
getLetter()
是从整数到字符的直接转换

在循环外调用
Math.random()
时,您会得到一个(单个)随机数,分配给
x
。从那时起,
x
不会改变,因此您将得到一个包含7个相同字母的机架


要解决此问题,请将
x
的初始化移动到
for
循环中。这样,您将调用
Math.random()
7次,而不是只调用一次。

您的for循环是正确的,但是您用于生成Tile的键只生成一次,这就是为什么7个Tile的值相同。尝试将生成x的代码放入循环中

int x;
for(int k = 0; k < 7; k++){
    x = = (int)(Math.random()*100);
    char c = getLetter(x);
    int val = getValue(c);
    tiles[k] = new Tile(c,val);
}
intx;
对于(int k=0;k<7;k++){
x==(int)(Math.random()*100);
char c=getLetter(x);
int val=getValue(c);
瓷砖[k]=新瓷砖(c,val);
}

for循环是正确的,但用于生成平铺的键只生成一次,这就是为什么7个平铺的值相同。尝试将生成x的代码放入循环中

int x;
for(int k = 0; k < 7; k++){
    x = = (int)(Math.random()*100);
    char c = getLetter(x);
    int val = getValue(c);
    tiles[k] = new Tile(c,val);
}
intx;
对于(int k=0;k<7;k++){
x==(int)(Math.random()*100);
char c=getLetter(x);
int val=getValue(c);
瓷砖[k]=新瓷砖(c,val);
}

for循环是正确的,但用于生成平铺的键只生成一次,这就是为什么7个平铺的值相同。尝试将生成x的代码放入循环中

int x;
for(int k = 0; k < 7; k++){
    x = = (int)(Math.random()*100);
    char c = getLetter(x);
    int val = getValue(c);
    tiles[k] = new Tile(c,val);
}
intx;
对于(int k=0;k<7;k++){
x==(int)(Math.random()*100);
char c=getLetter(x);
int val=getValue(c);
瓷砖[k]=新瓷砖(c,val);
}

for循环是正确的,但用于生成平铺的键只生成一次,这就是为什么7个平铺的值相同。尝试将生成x的代码放入循环中

int x;
for(int k = 0; k < 7; k++){
    x = = (int)(Math.random()*100);
    char c = getLetter(x);
    int val = getValue(c);
    tiles[k] = new Tile(c,val);
}
intx;
对于(int k=0;k<7;k++){
x==(int)(Math.random()*100);
char c=getLetter(x);
int val=getValue(c);
瓷砖[k]=新瓷砖(c,val);
}

您可能希望为每个循环获得不同的
x
值。无论如何,“不工作”不是一个完整/合适的描述。对于Scrabble,作为一组固定的分片,“正确”的方法是使用[随机]洗牌来选择分片。它似乎适用于变量
k
。这就是您想要的吗?您只在for循环外生成一次x字母,您可能希望为每个
x
循环获得不同的值。无论如何,“不工作”不是一个完整/合适的描述。对于Scrabble,作为一组固定的分片,“正确”的方法是使用[随机]洗牌来选择分片。它似乎适用于变量
k
。这就是您想要的吗?您只在for循环外生成一次x字母,您可能希望为每个
x
循环获得不同的值。无论如何,“不工作”不是一个完整/合适的描述。对于Scrabble,作为一组固定的分片,“正确”的方法是使用[随机]洗牌来选择分片。它似乎适用于变量
k
。这就是您想要的吗?您只在for循环外生成一次x字母,您可能希望为每个
x
循环获得不同的值。无论如何,“不工作”不是一个完整/合适的描述。对于拼字游戏,作为一组固定的分片,“正确”的方法是使用[随机]洗牌来选择分片