如何将整数2D数组的ArrayList与java中的int进行比较

时间:2014-05-10 21:06:03

标签: java arraylist int

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。 现在这是我的同一个类的全部代码..我在另一个主类中调用这些函数...

3 个答案:

答案 0 :(得分:0)

问题在于2D阵列初始化

如果noOfWords=1

,2D数组的价值是多少?
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)

那是;应该是a)

  

如果(等于(this.allWords.get(I)[i] [j] == 1);

此外,==已经比较了两件事,因此“等于”不是。摆脱平等。
这应该在for:

之外
  

allWords.add(字);

通过这种改变,只会有一个单词[] [],因此,将i改为1:

  

this.allWords.get(1)...