我正在尝试在java中对二维数组实现顺序搜索。
我目前有两个班。在第一类中,用户将数据值输入到数组中并输入他希望搜索的词(在他刚刚输入的数组/数据值中)。
此搜索由一种方法(第二类)处理,该方法进行顺序搜索,然后将结果传递回第一类。
我曾尝试使用以下代码,但顺序搜索不起作用......
文件#1(输入文件):
static public void s_2d_string () {
int counter,x;
counter = 2;
String[][] sortValues = new String[counter+1][2];
for (x=0;x<counter;x++) {
System.out.print("Enter book name: ");
sortValues[x][0] = readLine();
System.out.print("Enter book author: ");
sortValues[x][1] = readLine();
}
System.out.print("Which column would you like to sort by? 1 or 2? ");
String sortBystring = readline();
int sortBy;
sortBy = Integer.parseint(sortBystring);
sortBy = sortBy-1;
System.out.print("Enter search term: ");
String searchterm = readLine();
sortValues = s.sort(sortValues,counter, sortBy, searchterm);
int flagcounter_int = Integer.parseInt(sortValues[0][0]);
System.out.println(flagcounter_int + " results found.");
for (x=0;x<flagcounter_int;x++) {
System.out.println(sortValues[x+1][0] + ", " + sortValues[x+1][1]);
}
}
文件#2:
static public String[][] sort (String data[][], int totalNo, int sortBy, String searchterm) {
boolean found = false;
int flagcounter = 0;
if (sortBy == 0) {
for (int x=0; x<totalNo;x++) {
if (searchterm.equals(data[x][0])) {
found = true;
flagcounter = flagcounter+1;
data[flagcounter] = data[x];
}
}
}
if (sortBy == 1) {
for (int x=0; x<data.length;x++) {
if (searchterm.compareTo(data[x][1]) == 0) {
found = true;
flagcounter = flagcounter+1;
data[flagcounter] = data[x];
}
}
}
String flagcounter_string = Integer.toString(flagcounter);
data[0][0] = flagcounter_string;
return data;
}
具体问题是,如果我尝试在“n”列中搜索术语“k”并且术语“k”出现在第一行(无论哪一列),搜索功能将列出数组结果中的行数找到并列出结果:行数,k(重复数组中有多少行)。如果第一行没有出现“k”,则不会出现此问题(搜索功能完美运行)。
如何解决这个问题?