我正在编写一个程序,读取包含N行N列整数的方阵的文件。文件的第一行包含一个值,用于指定网格其余部分的N的“大小”。例如,如果第一行包含“10”,则其余行形成10×10矩阵。我的程序应该显示通过使用“强力”线性技术O(N ^ 2)找到(或找不到)给定元素所需的比较总数。 示例c:\ temp \ input.txt:
10
1 5 8 13 16 18 22 23 28 29
6 9 14 19 20 22 23 27 33 34
11 14 15 20 24 26 27 31 34 39
16 21 23 28 30 34 35 36 39 44
17 25 26 32 36 41 43 47 49 53
19 28 30 35 40 43 44 49 53 56
23 31 33 38 43 48 52 58 60 61
27 34 35 41 44 52 55 59 61 65
29 38 40 44 45 54 60 65 66 67
33 41 46 47 51 59 61 69 70 80
示例(作为Java App):
java program.class c:\ temp \ infile.txt 59
使用线性搜索在68次比较中发现了58
这是我的代码
public static int[][] create2DIntMatrixFromFile(String filename) throws Exception {
int[][] matrix = null;
String line;
int size = buffer.read();
int row=0;
while ((line = buffer.readLine()) != null) {
String[] vals = line.trim().split("\\s+");
if (matrix == null) {
public static void main(String[] args)
{
BufferedReader buffer = new BufferedReader(new FileReader(args[0]));
int size = buffer.read();
int[][] matrix = new int[100][100];
matrix = create2DIntMatrixFromFile(args[0]);
search1(matrix, size,args[1]);
matrix = new int[size][size];
}
for (int col = 0; col < size; col++) {
matrix[row][col] = Integer.parseInt(vals[col]);
}
}
row++;
}
return matrix;
}
void search1(int [][]matrix,int size,int x)
{
int count=0,comp=0;
for(int i=0;i<size;i++)
{ for(int j=0;j<=size;j++)
if(matrix[i][j]==x) count++;
comp++;
}
System.out.println(count+" found in" + comp + "comparisons using a linear search");
}
问题是我在主要方法上一直遇到语法错误,即search1方法不正确,我无法修复它。我欣赏的任何帮助
答案 0 :(得分:0)
你应该做的第一件事就是提供格式良好的代码。从我能够理解你的问题可能是你从静态main调用非静态方法,所以要么使search1静态或从类构造函数调用它(你需要创建一个)。