Witam. Mam mały problem w moim programie. Mianowicie chce zrobić wyszukiwanie (podanych wcześniej przeze mnie informacji: nazwisko, średnia, uwagi) Udało mi się zrobić wyszukiwanie po nazwisku, i uwagach (Stringi), ale nie wychodzi mi coś wyszukiwanie po średniej (float). Typy zmiennych gryzą mi się w programie i nie za bardzo mogę dojść do tego co powinienem zmienić. Będę wdzięczny za wszelką pomoc :)
package baza0;
import javax.swing.*;
import java.util.*;
class Osoba
{ String nazwisko;
float srednia;
String uwagi;
public void Nadaj_nazwisko(String lan)
{ nazwisko=lan;}
public String Podaj_nazwisko()
{ return nazwisko;}
public void Nadaj_uwagi(String lan)
{ uwagi=lan;}
public String Podaj_uwagi()
{ return uwagi;}
public void Nadaj_srednia(float srednia_)
{ srednia=srednia_;}
public float Podaj_srednia()
{return srednia;}
public String toString()
{String napis="";
napis+="Nazwisko: "+nazwisko;
napis+=" Srednia: "+srednia;
napis+=" Uwagi: "+uwagi;
return napis;
}
public boolean Szukajnazw(String s)
{
return nazwisko.equals(s);
}
public boolean Szukajuwagi(String a)
{
return uwagi.equals(a);
}
public boolean Szukajsrednia(Object o)
{
//Osoba d = (Osoba)o;
return srednia==srednia;
}
/*public boolean equals(Object o) //metoda umozliwiajaca przetwarzanie w pojemnikach typu Hash
{ Dane1 d=(Dane1)o;
return nazwisko.equals(d.nazwisko)
&& srednia==d.srednia
&& uwagi.equals(d.uwagi);
}
public int hashCode() //metoda umozliwiajaca przetwarzanie w pojemnikach typu Hash
{return nazwisko.hashCode()+(int)srednia+uwagi.hashCode();
} */
}
class Tablica
{
Osoba Dane[]=null;
int ile=0;
public boolean Pusta()
{
return ile==0;
}
public boolean Pelna()
{
return ile==Dane.length;
}
public int Podaj_ile()
{
return ile;
}
public void Wykonaj_tablice(int N)
{
ile=0;
Dane=new Osoba[N]; //utworzenie tablicy
}
public void Wstaw (String nazwisko_, float srednia, String uwagi_)
{
Osoba dana=new Osoba();
dana.Nadaj_nazwisko(nazwisko_);
dana.Nadaj_srednia(srednia);
dana.Nadaj_uwagi(uwagi_);
Dane[ile]=dana;
ile++;
}
public Osoba Wyszukaj_nazw(String s)
{
for (int i=0; i<ile;i++)
if (Dane[i].Szukajnazw(s))
return Dane[i];
return null;
}
public Osoba Wyszukaj_uwagi(String a)
{
for (int i=0; i<ile;i++)
if (Dane[i].Szukajuwagi(a))
return Dane[i];
return null;
}
public Osoba Wyszukaj_srednia(float z)
{
for (int i=0; i<ile;i++)
if (Dane[i].Szukajsrednia(z))
return Dane[i];
return null;
}
public String toString()
{
String s="";
for (int i=0; i<ile; i++)
s+=Dane[i].toString()+"\n";
return s;
}
}
public class Baza0
{
protected Tablica tablica=new Tablica();
public void Wyswietl()
{
if (tablica.Pusta())//jesli tablica istnieje, to można wyswietlac
JOptionPane.showMessageDialog(null,"Brak danych");
else
JOptionPane.showMessageDialog(null,tablica.toString());
}
public void Wypelnij()
{ String S;
S=JOptionPane.showInputDialog(null,"Podaj rozmiar tablicy");
int N=Integer.parseInt(S);
tablica.Wykonaj_tablice(N); //utworzenie tablicy
String S1,S2,S3;
while(!tablica.Pelna()) //jeśli tablica jes zapełniona, tak jest równe false
{
S1 = JOptionPane.showInputDialog(null, "Podaj nazwisko");
S2 = JOptionPane.showInputDialog(null, "Podaj srednia");
S3 = JOptionPane.showInputDialog(null, "Podaj uwagi");
tablica.Wstaw(S1, Float.parseFloat(S2), S3);//dopisanie danych na końcu danych
}
}
public void Wyszukaj_nazw()
{
if (tablica.Pusta())//jesli tablica istnieje, to mozna wyswietlac
JOptionPane.showMessageDialog(null,"Brak danych");
else
{
String S = JOptionPane.showInputDialog(null,"Podaj nazwisko");
Object osoba=tablica.Wyszukaj_nazw(S);
if(osoba!=null)
JOptionPane.showMessageDialog(null, osoba.toString());
else
JOptionPane.showMessageDialog(null, "Brak osób o podanym nazwisku");
}
}
public void Wyszukaj_uwagi()
{
if (tablica.Pusta())
JOptionPane.showMessageDialog(null,"Brak danych");
else
{
String A = JOptionPane.showInputDialog(null,"Podaj Uwagi");
Object osoba=tablica.Wyszukaj_uwagi(A);
if(osoba!=null)
JOptionPane.showMessageDialog(null, osoba.toString());
else
JOptionPane.showMessageDialog(null, "Brak osób o podanym uwagach");
}
}
public void Wyszukaj_srednia()
{
if (tablica.Pusta())
JOptionPane.showMessageDialog(null,"Brak danych");
else
{
String Z = JOptionPane.showInputDialog(null,"Podaj średnią");
Object osoba=tablica.Wyszukaj_srednia(Z);
if(osoba!=null)
JOptionPane.showMessageDialog(null, osoba.toString());
else
JOptionPane.showMessageDialog(null, "Brak osób o podanej średniej");
}
}
static public void main(String args[])
{ Baza0 baza1=new Baza0(); //referencja do tablicy, która jest tworzona w opcji 1
char ch;
String s;
do
{ s=JOptionPane.showInputDialog(null, "Progam nie jest zabezpieczony przed\n" +
"złym formatem danych i naciskaniem\nCancel w okienkach dialogowych.\n"+
"\nPodaj wybor: "
+"\n1 - Wypełnij tablice danymi osobowymi"
+"\n2 - Wyświetl dane wszystkich podanych osób"
+"\n\n3 - Wyszukaj osobe (wg. nazwiska) i wyświetl jej dane"
+"\n4 - Wyszukaj osobe (wg. sredniej) i wyświetl jej dane"
+"\n5 - Wyszukaj osobe (wg. uwag) i wyświetl jej dane"
+"\n\n6 - Usuń osobe"
+"\n\nk - Koniec programu");
ch = s.charAt(0); //pobranie opcji
switch(ch)
{case '1' : baza1.Wypelnij();
break;
case '2' : baza1.Wyswietl();
break;
case '3' : baza1.Wyszukaj_nazw();
break;
case '4' : baza1.Wyszukaj_srednia();
break;
case '5' : baza1.Wyszukaj_uwagi();
break;
case 'k' : JOptionPane.showMessageDialog(null, "Koniec programu");
break;
default : JOptionPane.showMessageDialog(null,"Zla opcja");
}
}while (ch != 'k') ;
System.exit(0);
}
}