如何设置这个2D布尔数组?

时间:2016-11-09 04:39:26

标签: java arrays if-statement boolean

所以我必须解决这个问题,但是这些数组让我感到困惑,因为我不确定如何将布尔值与数组相结合,然后将它们组织得恰当。我知道这是一个完全错误的代码,但我真的不知道该怎么做。这些是说明:

声明一个大小为5和10的二维布尔数组

如果随机值为0.5,则填充数组为true,否则为false

在数组中打印false数

每行打印一行

每行打印数组索引

仅打印具有真值的单元格的索引

  public class DoubleArray {

  public static void main(String [] args) {


  double [][] a = new double[10][15];
  int zeroCount = 0;               
  for (int i= 0; i<a.length;i++)
   {                               
      if (Math.random()>0.5)  {

           System.out.println("1" + "\t" + "1");
       }
    else 
    {

        zeroCount++;    // increment
        System.out.println("0" + "\t" + "0");

    }
}
System.out.println("Number of zeros is " + zeroCount);  

}
}

2 个答案:

答案 0 :(得分:0)

非常简单:只需迭代该数组并为每个单元格赋值:

boolean booleanData[][] = new boolean[10][5];
for(int i = 0; i < booleanData.length; i++) {
  for(int j = 0; j < booleanData[i].length; j++) {
    if ( if (Math.random()>0.5) {
      booleanData[i][j] = true;
    } else {
      booleanData[i][j] = false;
      zeroCount++;
    }

您使用相同类型的循环来打印数组元素,或对其内容进行其他检查。

或者,对每个循环使用更简单的方法:

for (boolean[] row : booleanData) {
  for (boolean aBool : row) {
     ... for printing, unfortunately not for assigning values ...

答案 1 :(得分:0)

虽然GhostCat已经有了一个很好的答案,但我决定只是为了获得你所要求的基本版本。这就是我想出的:

        boolean[][] a = new boolean[5][10];
        int falseCount = 0;
        String trueIndexes = "";

        for (int i = 0; i < a.length; i++){         //For every row...
            for (int j = 0; j < a[i].length; j++){  //For every column...

                 if (Math.random() > 0.5)  {        //Assign values to array
                     a[i][j] = true;
                 }
                 else{
                     a[i][j] = false;
                     falseCount++;                  //For every false value, increase the count
                 }
             }
        }
        System.out.println(falseCount);             //Print number of false values

        for (int i = 0; i < a.length; i++){
            for (int j = 0; j < a[i].length; j++){

                 System.out.print(a[i][j] + " ");   //Print out values

            }
            System.out.println();
        }


        for (int i = 0; i < a.length; i++){
            for (int j = 0; j < a[i].length; j++){

                 System.out.print(j + " ");         //Print out indexes
                 if(a[i][j] == true){
                     trueIndexes += " " + i + "," + j + " "; //Add up true value indexes
                 }
            }
            System.out.println();
        }

        System.out.println(trueIndexes);            //Print out true values

打印:

23
 false false false false true true false false false false 
 true false false true true true true false true false 
 true true false true false false true true false true 
 false false false true true true true false true true 
 true true false true false true true true true false 
 0 1 2 3 4 5 6 7 8 9 
 0 1 2 3 4 5 6 7 8 9 
 0 1 2 3 4 5 6 7 8 9 
 0 1 2 3 4 5 6 7 8 9 
 0 1 2 3 4 5 6 7 8 9 
0,4  0,5  1,0  1,3  1,4  1,5  1,6  1,8  2,0  2,1  2,3  2,6  2,7  2,9  3,3  3,4  3,5  3,6  3,8  3,9  4,0  4,1  4,3  4,5  4,6  4,7  4,8

您可以进行许多改进,例如组合用于打印元素的两个for循环,(提示:查看trueIndexes的实现方式,并记住"\n")但是我希望这个例子能为你提供一些帮助你制作自己版本的背景信息。