Java 如何测试随机二维数组的连续偶数整数?
我在写这个程序,用户为一个表输入维度,然后用这些维度创建一个表,其中的元素由一个整数为0到9的随机生成器确定。然后,我需要做的是创建一个循环来确定表中是否有四个连续的偶数整数Java 如何测试随机二维数组的连续偶数整数?,java,arrays,Java,Arrays,我在写这个程序,用户为一个表输入维度,然后用这些维度创建一个表,其中的元素由一个整数为0到9的随机生成器确定。然后,我需要做的是创建一个循环来确定表中是否有四个连续的偶数整数 2 5 8 7 1 3 2 9 4 7 5 1 2 0 3 8 0 1 2 7 在该表中,两个从第一个点开始呈对角线连续出现。也可以是这样的: 9 5 3 7 0 2 5 7 3 1 8 5 0 2 9 4 5 1 7 5 在此表中,从第二个点垂直向下显示五个 以下是我迄今为止所做的工作: public class F
2 5 8 7 1
3 2 9 4 7
5 1 2 0 3
8 0 1 2 7
在该表中,两个从第一个点开始呈对角线连续出现。也可以是这样的:
9 5 3 7 0
2 5 7 3 1
8 5 0 2 9
4 5 1 7 5
在此表中,从第二个点垂直向下显示五个
以下是我迄今为止所做的工作:
public class FourConsecutiveNumbers {
public static void main(String[] args) {
Scanner rowDimension = new Scanner(System.in);
System.out.print("Enter the number of rows: ");
int firstInput = rowDimension.nextInt();
Scanner columnDimension = new Scanner(System.in);
System.out.print("Enter the number of columns: ");
int secondInput = columnDimension.nextInt();
int[][] randomTable = new int[firstInput][secondInput];
for (int row = 0; row < firstInput; row++) {
for (int column = 0; column < secondInput; column++) {
randomTable[row][column] = (int)(Math.random() * 10 + 0);
System.out.print(randomTable[row][column] + " ");
}
System.out.println();
}
}
现在,这只是一段伪代码,但我真的很难理解如何做到这一点,并希望其他人提供一些输入。您可以尝试遍历表中的项目。对于每一个,如果相邻有一个匹配的数字,则有四个连续偶数的开始。从这里开始,您只需保持searcging在同一方向。您可以使用嵌套for循环检查每个维度,然后交换循环计数器以检查相反的维度。 我还没有对此进行测试,但我认为它应该可以工作:
import java.util.*;
public class FourConsecutiveNumbers {
static boolean check_vertical(int[][] randomTable){
for (int i =0; i<randomTable.length; i++){
for(int t=0; t<randomTable[0].length-3;t++){
if (randomTable[i][t]==randomTable[i][t+1] && randomTable[i][t+1]==randomTable[i][t+2] && randomTable[i][t+2]==randomTable[i][t+3]){
return true;
}
}
}
return false;
}
static boolean check_horizontal(int[][] randomTable){
for (int i =0; i<randomTable.length; i++){
for(int t=0; t<randomTable[0].length-3;t++){
if (randomTable[t][i]==randomTable[t+1][i] && randomTable[t+1][i]==randomTable[t+2][i] && randomTable[t+2][i]==randomTable[t+3][i]){
return true;
}
}
}
return false;
}
static boolean check_diagonal(int[][] randomTable){
//check down
for (int t =0; t<randomTable.length-3; t++){
for(int i=0; i<randomTable[0].length-3;i++){
if (randomTable[i][t]==randomTable[i+1][t+1] && randomTable[i+1][t+1]==randomTable[i+2][t+2] && randomTable[i+2][t+2]==randomTable[i+3][t+3]){
return true;
}
}
}
//check up
for (int t =randomTable.length; t>2; t--){
for(int i=0; i<randomTable[0].length-3;i++){
if (randomTable[t][i]==randomTable[t-1][i+1] && randomTable[t-1][i+1]==randomTable[t-2][i+2] && randomTable[t-2][i+2]==randomTable[t-3][i+3]){
return true;
}
}
}
return false;
}
public static void main(String[] args) {
Scanner rowDimension = new Scanner(System.in);
System.out.print("Enter the number of rows: ");
int firstInput = rowDimension.nextInt();
Scanner columnDimension = new Scanner(System.in);
System.out.print("Enter the number of columns: ");
int secondInput = columnDimension.nextInt();
int[][] randomTable = new int[firstInput][secondInput];
for (int row = 0; row < firstInput; row++) {
for (int column = 0; column < secondInput; column++) {
randomTable[row][column] = (int)(Math.random() * 10 + 0);
System.out.print(randomTable[row][column] + " ");
}
System.out.println();
}
if(check_horizontal(randomTable) || check_vertical(randomTable) || check_diagonal(randomTable)){
System.out.println("There are 4 in a row, in some way");
}
else{
System.out.println("No luck");
}
}}
import java.util.*;
公共类四个连续数{
静态布尔检查_垂直(int[][]随机表){
对于(int i=0;iIs)伪代码中有什么特别的部分困扰着你吗?@CBredlow没有,我知道代码的思想是什么;如何实现这一点困扰着我。如果你必须自己在没有计算机的情况下完成,你会怎么做?从第一部分开始(连续四次).假装你必须通过某种目镜,一次只能看到阵列中的一个数字(这样你就不会“发现”四个数字坐在一起)你必须想出某种方法来解决这个问题——会是什么?我想一旦你弄明白了,你所要做的就是把你的想法转换成代码,你应该能够做到。P.S.“偶数”是一个可以被2(2,4,6,8,…)整除的数我不认为你想在标题或问题中使用这个词——你可能是指“平等”。最好的方法是坐下来,在一张纸上写出一个2d数组,然后看伪代码,在你的头脑中计算出来,写下你为遵循该代码所做的所有步骤。这将导致正确的算法。从那里你可以继续编写代码。我一直在第44行和第72行发现StringIndexOutOfBounds错误,是的,我看到了我的错误。将-3与-4切换,因为数组的最后一个索引是length-1。这应该可以工作,但我还没有测试它。
import java.util.*;
public class FourConsecutiveNumbers {
static boolean check_vertical(int[][] randomTable){
for (int i =0; i<randomTable.length; i++){
for(int t=0; t<randomTable[0].length-3;t++){
if (randomTable[i][t]==randomTable[i][t+1] && randomTable[i][t+1]==randomTable[i][t+2] && randomTable[i][t+2]==randomTable[i][t+3]){
return true;
}
}
}
return false;
}
static boolean check_horizontal(int[][] randomTable){
for (int i =0; i<randomTable.length; i++){
for(int t=0; t<randomTable[0].length-3;t++){
if (randomTable[t][i]==randomTable[t+1][i] && randomTable[t+1][i]==randomTable[t+2][i] && randomTable[t+2][i]==randomTable[t+3][i]){
return true;
}
}
}
return false;
}
static boolean check_diagonal(int[][] randomTable){
//check down
for (int t =0; t<randomTable.length-3; t++){
for(int i=0; i<randomTable[0].length-3;i++){
if (randomTable[i][t]==randomTable[i+1][t+1] && randomTable[i+1][t+1]==randomTable[i+2][t+2] && randomTable[i+2][t+2]==randomTable[i+3][t+3]){
return true;
}
}
}
//check up
for (int t =randomTable.length; t>2; t--){
for(int i=0; i<randomTable[0].length-3;i++){
if (randomTable[t][i]==randomTable[t-1][i+1] && randomTable[t-1][i+1]==randomTable[t-2][i+2] && randomTable[t-2][i+2]==randomTable[t-3][i+3]){
return true;
}
}
}
return false;
}
public static void main(String[] args) {
Scanner rowDimension = new Scanner(System.in);
System.out.print("Enter the number of rows: ");
int firstInput = rowDimension.nextInt();
Scanner columnDimension = new Scanner(System.in);
System.out.print("Enter the number of columns: ");
int secondInput = columnDimension.nextInt();
int[][] randomTable = new int[firstInput][secondInput];
for (int row = 0; row < firstInput; row++) {
for (int column = 0; column < secondInput; column++) {
randomTable[row][column] = (int)(Math.random() * 10 + 0);
System.out.print(randomTable[row][column] + " ");
}
System.out.println();
}
if(check_horizontal(randomTable) || check_vertical(randomTable) || check_diagonal(randomTable)){
System.out.println("There are 4 in a row, in some way");
}
else{
System.out.println("No luck");
}
}}