java中的布尔棋盘游戏
程序应打印出数组1中的给定值,并将第二个数组打印为true或false Array1代表一种棋盘游戏,角色可以站在不同的位置。整数表示站在任何位置都有多危险 如果角色发现自己处于int 3,则将其声明为死亡。 如果您添加每个邻居的值(不包括当前位置),并且总值等于或大于15,则也将宣布其为死区 死=假(F) 活动=真实(T) 因此,如果当前位置为2或1,且每个邻居的总值小于15,则角色将存活。数组边缘缺少的邻居将计为0 如何以与array1相同的方式打印,但使用布尔值T或F totalavGrannar是一个变量,它应该将所有邻居的总值相加 到目前为止,我的代码是: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
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();
}
}