所以我正在处理一个处理随机生成的数组的任务。这是作业:
编写以下函数,测试二维列表是否具有四个相同值的连续数字,水平,垂直或对角。 public static boolean isConsecutiveFour(int [] [] values)编写一个测试程序,提示用户输入二维列表的行数和列数,然后使用随机数生成器填充数组并将其打印出来。如果列表包含四个具有相同值的连续数字,则显示True。否则,显示False。
我完成了所有其他工作,似乎工作正常,但我仍然坚持随机生成数组部分。应该发生的是用户应该输入数组的行数和列数,然后生成它。然后,测试该阵列以找出是否存在四个连续数字。当我来测试问题时,它实际上并没有显示数字。我很茫然,真的很困惑(任何人都可以帮助我或给我一个提示吗?非常感谢。谢谢!
import java.util.Random;
import java.util.Scanner;
public class ConsecutiveFour {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
Random r = new Random();
System.out.print("Enter number of rows: ");
int rows = input.nextInt();
input.nextLine();
System.out.print("Enter number of columns: ");
int columns = input.nextInt();
input.nextLine();
int[][] matrix = new int[rows][columns];
// generate some random boolean values
boolean[] booleans = new boolean[10];
for (int i = 0; i < booleans.length; i++) {
booleans[i] = r.nextBoolean();
}
for (boolean b : booleans) {
System.out.print(b + ", ");
}
System.out.println("");
}
public static boolean isConsecutiveFour(int[][] values) {
boolean cons = false;
int
//tests horizontally
for (int r=0; r < rows; r++) {
for (int c=0; c < columns - 3; c++){
if (values[c][r] == values[c+1][r] &&
values[c][r] == values[c+2][r] &&
values[c][r] == values[c+3][r]) {
cons = true;
}
}
}
//tests vertically
for (int r=0; r < rows - 3; r++) {
for (int c=0; c < columns; c++){
if (values[c][r] == values[c][r+1] &&
values[c][r] == values[c][r+2] &&
values[c][r] == values[c][r+3]) {
cons = true;
}
}
}
//tests diagonally (going down and to the right)
for (int r=3; r < rows; r++) {
for (int c=0; c < columns - 3; c++) {
if (values[c][r] == values[c+1][r-1] &&
values[c][r] == values[c+2][r-2] &&
values[c][r] == values[c+3][r-3]) {
cons = true;
}
}
}
//tests diagonally (going down and to the left)
for (int r=0; r < rows - 3; r++) {
for (int c=0; c < columns - 3; c++) {
if (values[c][r] == values[c+1][r+1] &&
values[c][r] == values[c+2][r+2] &&
values[c][r] == values[c+3][r+3]) {
cons = true;
}
}
}
return cons;
}
}
答案 0 :(得分:1)
要启动两个 input.nextLine(); 行是不必要的。您的 input.nextInt(); 足以引入您需要的两个值。
您可能更容易生成所需的确切数量的随机数。看到这是一个如何分配我会给你一些伪代码来解决。
for (int i = 0; i < rows; i++) {
for (int k = 0; i < columns; k++) {
int ranNum // Generate random number
// Place random number in matrix[i][k]
}
}
// Send array through checks
这是你遇到的问题,还是我误解了你的困惑?