【发布时间】:2016-04-13 20:14:52
【问题描述】:
我的老师给了我们一个矩阵,我们应该编写一个代码来检查它是否是拉丁方格。我有所有的部件,但我无法将它们整理好,以便它们正常工作。 这是她让我们阅读她创建的矩阵的内容。
文本文件是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");
【问题讨论】:
-
您需要提供“matrix.txt”文件或输入文件格式
-
如何给你 matrix.txt 文件?如果您想创建自己的 matrix.txt 文件,它只是一个 3x3 矩阵,是一个拉丁正方形。
-
将其添加到问题中,并使用适当的换行符
-
好的,我将它添加到问题中,但不确定我是否正确地做。请告诉我。
-
如果满足您的问题,请点击投票箭头下方的绿色复选框接受我的回答。
标签: java matrix latin-square