【发布时间】:2020-10-07 21:42:28
【问题描述】:
程序应该打印出 array1 中的给定值,并将第二个数组打印为真或假。
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 arrays for-loop boolean operators