簡體   English   中英

如何測試連續的偶數整數的隨機二維數組?

[英]How would I test a random two-dimensional array for consecutive even integers?

我正在編寫此程序,其中用戶輸入表格的尺寸,然后使用這些尺寸創建表格,並且其中的元素是由隨機生成器確定的,該生成器的整數為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.

現在,這只是要參考的偽代碼,但是我對如何做到這一點感到很困惑,並希望從其他人那里得到一些投入。

您可以嘗試遍歷表中的項目。 對於每一個,如果相鄰有一個匹配的數字,則以四個連續的偶數整數開頭。 從那里開始,您只需要保持相同的方向即可。

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

   }
}}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM