Witam, otóż napisałem program, który wczytuje dane z pliku do tablicy dwuwymiarowej, a następnie przeszukuje (binarysearch)tę tablicę. Program działa, ale do zrobienia go, musiałem użyć 3 tablic z prawie tą sama zawartością - ponieważ binarysearch przyjmuje tylko tablice jednowymiarowe, mogę wpisać np tablica[1][], wtedy łyknie drugą kolumnę do przeszukiwania. Ale jak zmusić, żeby program przeszukał 1 pierwszą kolumnę? niestety java nie łyka czegoś takiego jak tablica[][1]. Poza tym do wyszukiwania potrzebuje również połączone rekordy dwóch kolumn. Czy istnieje jakiś sposób, aby załatwić to jednąt ablicą? Załączam fragmenty kodu:
public testujM() throws Exception
{
int lineCount = 0;
BufferedReader rdr = new BufferedReader(new InputStreamReader(new FileInputStream(Plik_Zrodlowy),
Kodowanie));
while ((rdr.readLine()) != null)
{
lineCount++;
}
String wers;
dane = new String[lineCount][4];
daneRozszerzone = new String[lineCount];
TablicaKodow = new String[lineCount];
lineCount=0;
BufferedReader rdr2 = new BufferedReader(new InputStreamReader(new FileInputStream(Plik_Zrodlowy),
Kodowanie));
while ((wers=rdr2.readLine()) != null)
{
dane[lineCount]=wers.split(";");
TablicaKodow[lineCount] = dane[lineCount][0];
daneRozszerzone[lineCount]= ((dane[lineCount][0]+dane[lineCount][1]).toLowerCase());
lineCount++;
}
}
static private boolean SprawdzKod(String kod) throws Exception
{
if(0>(numer_wersu=Arrays.binarySearch(TablicaKodow, kod)))
return true;
else
return false;
}
static private boolean SprawdzKodPonownie(String kod, String miasto)
{
if(0>(numer_wersu=Arrays.binarySearch(daneRozszerzone, ((kod+miasto).toLowerCase()))))
return true;
else
return false;
}
static private boolean SprawdzMiasto(String miasto)
{
if(0==dane[numer_wersu][1].compareToIgnoreCase(miasto))
return true;
else
return false;
}