import java.util.Random;
public class Mutation {
public Mutation()
{
}
private ArrayList<int[][]> allWords=new ArrayList<int[][]>();
public ArrayList<int[][]> wordGenrator(int noOfWords)
{
int rand,j;
int word[][]=new int[8][8];
for(int i=0;i<noOfWords;i++)
{
for(j=0;j<8;j++)
{
rand = new Random().nextInt(2);
System.out.print(rand);
word[i][j]=rand;
}
System.out.print("\n");
allWords.add(word);
}
return allWords;
}
public boolean isExistWordOfAllOnes()
{
int counter;
for(int i=0;i<5;i++)
{
counter=0;
for(int j=0;j<8;j++)
{
if(equals(this.allWords.get(i)[i][j]==1)
{
counter++;
}
}
if(counter==8)
{
return true;
}
}
return false;
}
循环运行良好,但这不能正确比较。我希望如果allword(i)
全部为1则返回true,否则为false。
现在这是我的同一个类的全部代码..我在另一个主类中调用这些函数...
答案 0 :(得分:0)
问题在于2D阵列初始化
如果noOfWords=1
?
int word[][]=new int[8][8];
for(int i=0;i<noOfWords;i++)
{
for(j=0;j<8;j++)
{
rand = new Random().nextInt(2);
System.out.print(rand);
word[i][j]=rand;
}
System.out.print("\n");
allWords.add(word);
}
查看内联评论。
public boolean isExistWordOfAllOnes()
{
int counter;
for(int i=0;i<5;i++) // iterate all the words that are 2D arrays
{
counter=0;
for(int j=0;j<8;j++) // row
{
for (int k = 0; k < 8; k++) { // column
if (this.allWords.get(i)[j][k]==1) { // if it is equal to 1
counter++;
}
}
}
if(counter==8*8)//total 64 ones in 8*8 2D array
{
return true;
}
}
return false;
}
答案 1 :(得分:0)
就我读到你的代码和文本而言,我认为你有一个int [5] [8]数组,你想检查数组的每一行中是否至少有一个“1” 。在这种情况下,您需要更改代码,如下所示
public boolean isExistWordOfAllOnes()
{
int counter;
for(int i=0;i<5;i++)
{
counter=0;
for(int j=0;j<8;j++)
{
if(this.allWords.get(i)[i][j]==1)
{
counter++;
}
}
if(counter < 1) // If there were no 1's then count should still be 0
{ // and the method returns false as a row was found
return false; // in which there wasn't a 1
}
}
return true;
}
答案 2 :(得分:0)
如果(等于(this.allWords.get(I)[i] [j] == 1);
此外,==已经比较了两件事,因此“等于”不是。摆脱平等。
这应该在for:
allWords.add(字);
通过这种改变,只会有一个单词[] [],因此,将i改为1:
this.allWords.get(1)...