java中的布尔棋盘游戏

java中的布尔棋盘游戏,java,arrays,for-loop,boolean,operators,Java,Arrays,For Loop,Boolean,Operators,程序应打印出数组1中的给定值,并将第二个数组打印为true或false Array1代表一种棋盘游戏,角色可以站在不同的位置。整数表示站在任何位置都有多危险 如果角色发现自己处于int 3,则将其声明为死亡。 如果您添加每个邻居的值(不包括当前位置),并且总值等于或大于15,则也将宣布其为死区 死=假(F) 活动=真实(T) 因此,如果当前位置为2或1,且每个邻居的总值小于15,则角色将存活。数组边缘缺少的邻居将计为0 如何以与array1相同的方式打印,但使用布尔值T或F totalavGra

程序应打印出数组1中的给定值,并将第二个数组打印为true或false

Array1代表一种棋盘游戏,角色可以站在不同的位置。整数表示站在任何位置都有多危险

如果角色发现自己处于int 3,则将其声明为死亡。 如果您添加每个邻居的值(不包括当前位置),并且总值等于或大于15,则也将宣布其为死区

死=假(F) 活动=真实(T)

因此,如果当前位置为2或1,且每个邻居的总值小于15,则角色将存活。数组边缘缺少的邻居将计为0

如何以与array1相同的方式打印,但使用布尔值T或F

totalavGrannar是一个变量,它应该将所有邻居的总值相加

到目前为止,我的代码是:

     import java.util.Arrays;
     public class uppg10{
      public static void main(String[] args){


      int [][] array1 = {{1,1,2,3,3},
                         {2,1,1,2,3},
                         {3,2,2,1,2},
                         {3,3,3,3,3}};

      boolean [][] array2 = new boolean [4][5];

      int rows = array1.length;
      int cols = array1[0].length;

      int totalavGrannar = 0;

      array2 = new boolean[rows][cols];

      for (int row=0; row<rows; row++) {
       for (int col=0; col<cols; col++) {

       System.out.print(String.format("%4d", array1[row][col]));

        if ( ( (col+1) % cols ==0) && (col > 0))

        System.out.println();
       }
      }

      for (int row=0; row<rows; row++) {
       for (int col=0; col<cols; col++) {

       boolean trueorFalse;

       if (array1[row][col]<3) {
        trueorFalse = true;
        array2[row][col] = trueorFalse;
       }
       else{
         trueorFalse = false;
       }

       row = 1;
       col = 1;

       for(int offsetRow=row-1; offsetRow<=row+1; offsetRow++){
        for(int offsetCol=col-1; offsetCol<=col+1; offsetCol++){

           totalavGrannar += array1[offsetRow][offsetCol];

           boolean trueorFalse2;

           if (totalavGrannar<15) {
             trueorFalse2 = true;
             array2[row][col] = trueorFalse2;
           }

           else{
             trueorFalse2 = false;

           }

         }
        }

       }
      }

      for (int row=0; row<array2.length; row++) {
       for (int col=0; col<array2[row].length; col++) {

       System.out.print(String.format("%8s" , array2[row][col] ? "T" : "F"));

       if ( ( (col+1) % cols ==0) && (col > 0))

       System.out.println();

       }
      }
导入java.util.array;
公共类uppg10{
公共静态void main(字符串[]args){
int[]数组1={{1,1,2,3,3},
{2,1,1,2,3},
{3,2,2,1,2},
{3,3,3,3,3}};
布尔[][]数组2=新的布尔值[4][5];
int rows=array1.length;
int cols=array1[0]。长度;
int totalavGrannar=0;
array2=新的布尔值[行][cols];
对于(int row=0;row)
如何以与array1相同的方式打印,但使用布尔值T或F

对于您的问题,您在代码中做的是正确的。 您的代码无法工作,因为您几乎没有其他问题:

  • 在第二个循环中,即使为false(dead),也会覆盖array2值。 你让他活着(设定为真)

    if(溶液I中的totalavGrannar)设置条件以排除位置本身

  • 另一个问题是,当您对邻居求和时,您会将updat(T/F)的每个加法的相等性检查为15。这是浪费。 -->您需要求和所有值,然后才更新值(T/F)

  • 在第二个循环中,您将循环条件重置为“1”,这样就有了无限循环。 -->我去掉了那些线

  • 你忘了重置totalavGrannar 我建议一个简短的解决方案: (我还删除了一些冗余线路)

    导入java.util.array;
    公共类uppg10{
    公共静态void main(字符串[]args){
    int[][]数组1={{1,1,2,3,3},
    {2, 1, 1, 2, 3},
    {3, 2, 2, 1, 2},
    {3, 3, 3, 3, 3}};
    int rows=array1.length;
    int cols=array1[0]。长度;
    boolean[]array2=新的boolean[rows][cols];
    int totalavGrannar=0;
    //打印阵列1
    对于(int row=0;row0))
    System.out.println();
    }
    }
    对于(int row=0;row=15)
    array2[行][列]=假;
    全矢状位=0;
    }
    }
    for(int row=0;row0))
    System.out.println();
    }
    }
    
    } }


  • 先生,你是国宝!不过我有一个问题。例如,数组1[3][4[在给定条件下不应该打印为F吗?如果(totalavGrannar>=15)数组2[row][col]=false;是的,你是对的!我在代码中添加了修复。请参阅代码中的diff-in/*comment*/
    if (totalavGrannar<15) {
        trueorFalse2 = true;
        array2[row][col] = trueorFalse2;
    }
    
      import java.util.Arrays;
    
      public class uppg10 {
      public static void main(String[] args) {
     int[][] array1 = {{1, 1, 2, 3, 3},
             {2, 1, 1, 2, 3},
             {3, 2, 2, 1, 2},
             {3, 3, 3, 3, 3}};
    
     int rows = array1.length;
     int cols = array1[0].length;
    
     boolean[][] array2 = new boolean[rows][cols];
    
     int totalavGrannar = 0;
     //Print array1
     for (int row = 0; row < rows; row++) {
         for (int col = 0; col < cols; col++) {
             System.out.print(String.format("%4d", array1[row][col]));
             if (((col + 1) % cols == 0) && (col > 0))
                 System.out.println();
         }
     }
    
     for (int row = 0; row < rows; row++) {
         for (int col = 0; col < cols; col++) {
    
             if (array1[row][col] < 3)
                 array2[row][col] = true;
             //Iterate neighbors to sum values
             for (int offsetRow = row - 1; offsetRow <= row + 1; offsetRow++) {
                 for (int offsetCol = col - 1; offsetCol <= col + 1; offsetCol++) {
    
                     if (offsetRow >= 0 && offsetCol >= 0)   //0-bounds check
                         /*if (offsetRow < array1.length && offsetCol < array1.length) //edges-bounds check
                             if (offsetRow != row && offsetCol != col) {      //exclude position from sum
                                 totalavGrannar += array1[offsetRow][offsetCol];
                             }*/
                         if (offsetRow < array1.length && offsetCol < array1[0].length) //edges-bounds check
                             if (offsetRow != row || offsetCol != col) {      //exclude position from sum
                                 totalavGrannar += array1[offsetRow][offsetCol];
                             }
                 }
             }
             if (totalavGrannar >= 15)
                 array2[row][col] = false;
             totalavGrannar = 0;
         }
     }
     for (int row = 0; row < array2.length; row++) {
         for (int col = 0; col < array2[row].length; col++) {
    
             System.out.print(String.format("%8s", array2[row][col] ? "T" : "F"));
             if (((col + 1) % cols == 0) && (col > 0))
    
                 System.out.println();
    
         }
     }