我对此代码有疑问:
import java.util.Random;
public class DotComObjects {
public int[][] setBarcos(int tablero[][]) {
boolean repetido; //Variable booleana para comprobar si una casilla ya esta ocupada por otro barco
do {
repetido = false; //Suponesmos que no esta ocupada ninguna de las casillas
Random aRandom = new Random();
boolean horizontal = aRandom.nextBoolean(); //Booleana al azar para la colocacion del barco. True = horizontal, false = vertical
if (horizontal == true) { //Si el barco va en horizontal
int ancho = aRandom.nextInt(tablero.length - 2); //Calculamos al azar la casilla
int alto = aRandom.nextInt(tablero[0].length); //central del barco (tendra 3)
if ((tablero[ancho - 1][alto] == 1) || (tablero[ancho][alto] == 1) || (tablero[ancho + 1][alto] == 1)) { //Si una de las casillas ya esta ocupada
repetido = true; //Variable booleana repetida en true
}
} else { //Si el barco va en vertical
int ancho = aRandom.nextInt(tablero.length); //Calculamos al azar la casilla
int alto = aRandom.nextInt(tablero[0].length - 2); //central del barco (tendra 3)
if ((tablero[ancho][alto - 1] == 1) || (tablero[ancho][alto] == 1) || (tablero[ancho][alto + 1] == 1)) { //Si una de las casillas ya esta ocupada
repetido = true; //Variable booleana repetida en true
}
}
} while (repetido == true); //Repetimos hasta que no haya una casilla ocupada (variable repetido = false)
*** if (horizontal == true) { //Si el barco va en horizontal
*** tablero[ancho - 1][alto] = 1;
*** tablero[ancho][alto] = 1; //Colocamos el barco en el tablero
*** tablero[ancho + 1][alto] = 1;
} else { //Si el barco va en vertical
*** tablero[ancho][alto - 1] = 1;
*** tablero[ancho][alto] = 1; //Colocamos el barco en el tablero
*** tablero[ancho][alto + 1] = 1;
}
return tablero; //Devolvemos el tablero con el barco colocado
}
}
它在***上。 3个变量的问题是相同的:水平/ ancho / alto无法解析为变量。
感谢。
答案 0 :(得分:3)
这是一个克拉奇的范围问题。
所有这三个变量都在do {] while
循环中声明,因此不存在于其之外。
要解决此问题,请将声明移至do
boolean repetido; //Variable .....
boolean horizontal = false;
int ancho = 0;
int alto = 0;
do {
repetido = false; //Suponesmos ...
Random aRandom = new Random();
horizontal = aRandom.nextBoolean();
ancho = aRandom.nextInt(tablero.length - 2); //Calculamos ...
alto = aRandom.nextInt(tablero[0].length); //central ...
答案 1 :(得分:0)
您的变量在do ... while循环内声明,因此无法在该循环之外访问它们。