Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何测试随机二维数组的连续偶数整数?_Java_Arrays - Fatal编程技术网

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

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

我在写这个程序,用户为一个表输入维度,然后用这些维度创建一个表,其中的元素由一个整数为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();
    }
}

现在,这只是一段伪代码,但我真的很难理解如何做到这一点,并希望其他人提供一些输入。

您可以尝试遍历表中的项目。对于每一个,如果相邻有一个匹配的数字,则有四个连续偶数的开始。从这里开始,您只需保持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");

   }
}}