我想在java中的二維數組上實現順序搜索。Java搜索2D字符串數組
我目前有兩個類。在第一類中,用戶將數據值輸入到數組中,並輸入他希望搜索的項(在他剛輸入的數組/數據值中)。
該搜索由一個方法(第二類)處理,該方法執行順序搜索,然後將結果傳遞迴第一類。
我一直在使用這下面的代碼試過,但順序查找工作不...
文件#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」沒有出現在第一行(搜索功能完美),則不會出現此問題。
如何解決這個問題?
我剛剛添加了「家庭作業」標籤。沒有繞過它。 – Bohemian 2012-07-10 18:53:42
什麼不起作用?你做了什麼來弄清楚什麼是錯的? – Marvo 2012-07-10 18:58:27
具體問題是,如果我嘗試在列「n」中搜索術語「k」,並且術語「k」出現在第一行(不管哪列),搜索功能將列出*中的行數array *結果找到並列出結果:*行數*,k(重複數組中的行數)。如果「k」沒有出現在第一行(搜索功能完美工作),則不會出現此問題... – 01jayss 2012-07-10 19:03:19