-2

先生から行列が渡されたので、それがラテン方陣かどうかをチェックするコードを書くことになっています。私はすべての部品を持っていますが、うまく機能するようにそれらを整理するのに苦労しています. これは、彼女が作成したマトリックスを読み取るために彼女が私たちに与えたものです。

テキスト ファイルは matrix.txt です。これに含まれるものを次に示します。

3

1 2 3

3 1 2

2 3 1

ご覧のとおり、これはラテン方陣ですが、マトリックスを変更して、彼女が私たちに与えた他の問題で確実に機能するようにすることができると彼女は言いました.

     import java.io.File;
     import java.io.FileNotFoundException;
     import java.util.Scanner;
     public class Multidim {

public static void main(String args[]){
    int matrix[][] = initMatrix();
    //printData(matrix); //Uncomment to print array

    /////YOUR MAIN CODE HERE/////



}

///PLACE YOUR METHODS HERE

public static int[][] initMatrix(){
    int matrix[][];
    Scanner filein = null;
    try {
        filein = new Scanner(new File("matrix.txt"));
        int numRows = Integer.parseInt(filein.nextLine());
        matrix = new int[numRows][];
        parseData(matrix, filein);
        filein.close();
        return matrix;
    } catch (FileNotFoundException e) {
        System.out.println(e.getMessage());
        if(filein != null)
            filein.close();
        return null;
    }
}

public static void parseData(int matrix[][], Scanner in){
    for(int r = 0; r < matrix.length; r++){
        String splitLine[] = in.nextLine().split(" ");
        matrix[r] = new int[splitLine.length];
        for(int c = 0; c < matrix[r].length; c++){
            matrix[r][c] = Integer.parseInt(splitLine[c]);
        }
    }
}

public static void printData(int matrix[][]){
    for(int r = 0; r < matrix.length; r++){
        for(int c = 0; c < matrix[r].length; c++){
            System.out.print(matrix[r][c] + " ");
        }
        System.out.println();
    }
}

}

これは私が現在持っているコードです。それはどこに行くのですか?

    public static boolean LatinSquare(int[][]array) {
    for(int i=0;i<array.length;i++) {
        for(int j=0; j<array[i].length; j++)  {
           if(i!=j)   {
               return false;
           }
        }
    }
    return true;
}
public boolean DuplicatesInRows(int[][]array) {
    for (int i=0; i<array.length; i++)  {
        for (int j=0;j<array[i].length; j++) {
            int num=array[i][j];
            for(int col =j+1; col<array.length; col++) {
                if(num==array[i][col])  {
                    return true;
                }
            }
        }
    }
    return false;
   }
public boolean DuplicatesInCol(int[][]array) {
    for(int i=0;i<array.length; i++)  {
        for(int j=0; j<array.length; j++)  {
            for(int k=1; k<array.length; k++)  {
                if (array[i][j+k]==array[i][j])  {
                    if (array[i][j]!=0)  {
                        return true;
                    }
                }
            }
        }
    }
    return false;
    }

そして、これもどこに行くのかわかりません...

  if(LatinSquare(matrix)==false)
  System.out.println("This is not a Latin Square");
  else
  System.out.println("This is a Latin Square");
4

1 に答える 1