Javaで2D配列に順次検索を実装しようとしています。
私は現在2つのクラスを持っています。最初のクラスでは、ユーザーはデータ値を配列に入力し、検索したい用語を入力します (入力した配列/データ値に)。
この検索は、順次検索を実行し、結果を最初のクラスに戻すメソッド (2 番目のクラス) によって処理されます。
この次のコードを使用してみましたが、順次検索が機能しません...
ファイル #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」が表示されない場合は発生しません (検索機能は完全に機能します)。
これを修正する方法は?