如何为连续的偶数整数测试随机二维数组?

时间:2014-11-26 23:38:01

标签: 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 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();
    }
}

}

我知道它不多,我只创建了两个扫描仪和表格。我不知道如何创建循环来确定连续四个偶数整数。在我考虑它时,我想知道这样做的方法是创建一个嵌套循环来检查第一行然后第一列,然后确定该行或列中的任何一个是否包含相同的整数四次。然后根据用户输入的尺寸重复该操作。我不确定......

我知道这是主要的想法:

if there is x number that repeats consecutively four times in a row, then return true; else false
if there is x number that repeats consecutively four times in a column, then return true; else false
if there is x number that repeats consecutively four times in surrounding corner, then return true; else false.

现在,这只是伪代码引用,但我对我将如何做到这一点感到非常难过,并希望得到其他人的一些意见。

2 个答案:

答案 0 :(得分:0)

您可以尝试遍历表格中的项目。对于每一个,如果在其附近存在匹配的数字,则存在四个连续偶数整数的开始。从那里,你只需要保持同样的方向。

答案 1 :(得分:0)

您可以使用嵌套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");

   }
}}