这是我的第一篇文章,对不起,如果我做错了什么!
我正在尝试制作一个程序,在其中输入宽度和高度。从这2个值中,取10个值并将10个值随机设置为true或false。请注意,这是我遇到麻烦的学校作业。
我该怎么做?
这是给我的问题:
任务1:
- 创建新类“ BinaryMap”
- 创建新方法“ generateRandomArrayFix”,该方法将创建大小为10x10的2D布尔数组
- 使用false初始化所有值
- 100个值中的10个应随机更改为true
- 返回布尔数组。
import java.util.Random;
import Prog1Tools.IOTools;
public class BinaryMap {
public static void main(String[] args) {
boolean[][] array = generateRandomArray();
// for (int i = 0; i < array.length; i++) {
// printArray(array[i]);
// }
}
private static void printArray(boolean[] booleans) {
}
/**
* Ändert einen Wert im gegebenen daten-Array;
* aus wahr wird falsch und aus falsch wird wahr
*
* @param daten - Array welches verändert werden soll
* @param x - x-Koordinate des Wertes
* @param y - y-Koordinate des Wertes
*/
static void updateArray(boolean[][] daten, int x, int y) {
}
private static boolean[][] generateRandomArrayFix() {
// Random rand = new Random();
/*
* 10 random aus 100
*/
boolean[][] randomArray;
int x = 10, y = 10;
randomArray = new boolean[x][y];
for (x = 0; x < randomArray.length; x++) {
for (y = 0; y < randomArray.length; y++) {
randomArray[x][y] = false;
}
}
return randomArray;
}
private static boolean[][] generateRandomArray() {
Random rand = new Random();
int rowWidth = IOTools.readInt("Enter Grid Width: ");
int colHeight = IOTools.readInt("Enter Grid Height: ");
boolean[][] board = new boolean[rowWidth][colHeight];
for (int idx = 1; idx <= 10; ++idx) {
//fill the grid
for (int row = 0; row < board.length; row++) {
for (int col = 0; col < board[row].length; col++) {
board[row][col] = rand.nextBoolean();
}
}
//display output
for (int i = 0; i < board.length; i++) {
for (int j = 0; j < board[i].length; j++) {
System.out.print(board[i][j] + " ");
//System.out.println();
}
System.out.println();
}
return board;
}
return board;
}
}
答案 0 :(得分:0)
欢迎来到SO。不幸的是,您发布的代码存在很多问题(包括语法错误),因此我们很难提出具体更改来解决您的问题。
我不建议您提供要求的解决方案,而是建议您先将任务分解为几个步骤,然后将每个步骤转变为要验证的方法(通过单元测试),然后再进行下一个步骤。
因此,例如,第一个任务是:创建一个初始化为false的10x10数组。为此编写测试可能是唯一棘手的部分。像这样:
class BinaryMap {
public int countValues(boolean value) {
...
}
}
class BinaryMapTest {
@Test
void testInitialisation() {
BinaryMap map = new BinaryMap():
assertThat(map.countValues(false)).isEqualTo(100);
assertThat(map.countValues(true)).isEqualTo(0);
}
}
我建议您在继续进行true
值的随机赋值之前使该代码正常工作。
在这种情况下,实际上唯一需要避免的棘手事情是仅生成10个随机位置并将其分配给true
。如果碰巧生成重复项,则数组中的值将少于10个true
。
所以代替:
for 10 iterations
assign random value to true
您需要
while there are less than 10 true values
assign random value to true