[Pytanie] BlueJ-Baza danych- problem z sortowaniem.

0

Witam mam problem z kodem na sortowanie "Telefonów": analfabetycznie, w ogóle nie wiem jak się do tego zabrać. Od nie dawna bawię się w BlueJ więc proszę o wyrozumiałość ;]

Tak wygląda mniej więcej program:

CLASS TELEFONY

import java.io.*;
public class telefony implements Serializable
{
    //typ nazwa
   private  String Marka;
   private String Model;
   private int nrSeryjny;
   //konstruktor
   
   public void wypisz(){
  System.out.println("@@@@@@@@"  );     
  System.out.println( "Marka: "+Marka );     
     System.out.println("Model:" +Model ); 
    System.out.println("nrSeryjny:" +nrSeryjny ); 
     System.out.println("*********"  ); 
    }
   public telefony() { 
    Model = "Gallus";
    
    }
    // new Student("Piotr", "M", 8487897)
   public telefony(String Marka,
                  String Model , 
                  int nrSeryjny ){
   //pole klasy = arg formalny
         this.Marka = Marka ;
         this.Model = Model;
         this.nrSeryjny = nrSeryjny;
                       }//konstr
                    
        String getMarka(){
   return this.Marka;   
    }
    //stx.setMarka("Nokia");
    void setMarka(String Mar ){
        Marka = Mar;
    }
        String getModel(){
   return this.Model;   
    } 
    //stx.setModel("model");
    void setModel(String Mod ){
        Model = Mod;
    }
    int getNrSeryjny(){
     return nrSeryjny;   
    }
    
}

CLASS PĘTLA GŁÓWNA

import java.io.*;
public class GlownaPetla
{
static String plik = "Baza.obj";
static telefony[] baza = new telefony[20];

    public static void main(String[] ar){
      char w = 'a';
        do{
        System.out.println(" 1 - Baza Telefonów Komórkowych");
               System.out.println(" 2 - Baza Pracowników");
w =Konsola.czytajText("Lista Wyboru ").charAt(0);
  switch(w){
case '1':      
        telefony();
        
 break;
case '2':
  System.out.println("w trakcie pracy");
break;}//switch  
   w =Konsola.czytajText("Co wybierasz t-exit, cokolwiek-zostaje").charAt(0); 
 }//do
           while(! (w=='t' || w=='T')  );   
       }//main
       
       public static void telefony(){
           czytaj(plik);
        char w = 'a';
        do{
            menu();
w =Konsola.czytajText("Co wybierasz? ").charAt(0);
switch(w){
case '1':
System.out.println("Dodaj Telefon do Bazy");
dodaj();
zapisz(plik);
break;
case '2':
System.out.println("Edycja Telefonów");
czytaj(plik);
wyswietl(baza);
w =Konsola.czytajText("Co zmieniasz rekordy? t-yes, n - no ").charAt(0);
if(w=='t'){
int nrr =Konsola.czytajInt("numer do edycji ");
if(baza[nrr]!=null){
w =Konsola.czytajText(" zmieniaszcały rekord w-yes, n - no ").charAt(0);
if(w=='w') edytuj(nrr);
else{
w =Konsola.czytajText("Co zmieniasz? p-producent m-model, n - numer ").charAt(0);
switch(w){
case 'p' :
String pr  =Konsola.czytajText("podaj producenta marki: ");
baza[nrr].setMarka(pr);
zapisz(plik);
break;
}//switch wewn
}//else
}//nie null
else System.out.println( "pusty numer");
}
break;
case '3' :
System.out.println("Usuń");
int nrr =Konsola.czytajInt("numer do usunięcia ");
baza[nrr]=null;
zapisz(plik);
break;
default:
System.out.println("W trakcie pracy");
}        
//pobiorę parametr
w =Konsola.czytajText("Co wybierasz t-exit, cokolwiek-zostaje").charAt(0); 
 }
           while(! (w=='t' || w=='T')  ); 
           
        }//studenci
public static void menu(){
System.out.println("1 - dodaj Telefon");
System.out.println("2 - edytuj Telefon");
System.out.println("3 - usuń Telefon");
System.out.println("inny klawisz wyjscie - dodaj Telefon");
System.out.println("t  - ponów");
}

public static void zapisz(String np){
File plik = new File(np);
try{
FileOutputStream fos = new FileOutputStream(plik);
BufferedOutputStream bufor = 
    new BufferedOutputStream(fos);
ObjectOutputStream    oos = 
    new ObjectOutputStream(bufor);
    oos.writeObject(baza);
    oos.flush();
    oos.close();
}
catch(IOException ioe){
//alter
System.err.println("błąd " + ioe.toString());
}
}//zapisz

public static void czytaj(String np){
File plik = new File(np);
try{
FileInputStream fos = new FileInputStream(plik);
BufferedInputStream bufor = 
    new BufferedInputStream(fos);
ObjectInputStream    oos = 
    new ObjectInputStream(bufor);
baza = (telefony[] ) (   oos.readObject() );
    oos.close();
}
catch(IOException ioe){
//alter
System.err.println("błąd " + ioe.toString());
}
catch(ClassNotFoundException ioe){
//alter
System.err.println("błąd - brak klasy xxx" + ioe.toString());
}
}//zapisz

public static void dodaj(){
String im = Konsola.czytajText("Podaj Markę: ");
String na = Konsola.czytajText("Podaj : Model");
int nr    = Konsola.czytajInt("Podaj nr Seryjny: ");

telefony std = new telefony(im, na, nr);
dodaj(std);
}//dodaj()
public static void edytuj(int nr){
String im = Konsola.czytajText("Podaj nową Markę, było-"+baza[nr].getMarka()+" -:");
String na = Konsola.czytajText("Podaj : Model, było-"+baza[nr].getModel()+" -:");
int nrs    = Konsola.czytajInt("Podaj nr Seryjny: , było-"+baza[nr].getNrSeryjny()+" -:");


baza[nr] =  new telefony(im, na, nrs);
zapisz(plik);
}//edytuj()
public static void dodaj(telefony s){
for(int i=0 ; i<baza.length ; i++){
if(baza[i] == null){
baza[i] =s;
return;//pójdzie na koniec dodaj
}//if
}//for  
System.out.println("nie udało się -Baza jest pełna");   
}//koniec dodaj    

public static void wyswietl(telefony[] tab){
for(int i = 0 ; i < tab.length ; i++){
if(tab[i] != null){
System.out.println("nr = "+i);
tab[i].wypisz();

}
}//for

}

}

CLASS CONSOLA

import java.io.*;
public class Konsola
{
public  static double czytaj(String z){
double zwrot =0.0;
String st = czytajText(z );
Double d = new Double(st);
if ( d.isNaN() ){
System.out.println("Nie podałeś liczby we właściwym formacie");
}
else{
zwrot  = d.doubleValue();
}
return zwrot;
}//czytaj double
public  static int czytajInt(String z){
int zwrot =0;
String st = czytajText(z );
Integer d = new Integer(st);
Double d1 = new Double(st);
if ( d1.isNaN() ){
System.out.println("Nie podałeś liczby we właściwym formacie");
}
else{
zwrot  = d.intValue();
}
return zwrot;
}//czytajInt
public static String czytajText(String zaj){
System.out.print(zaj + ": ");
InputStreamReader isr=
   new InputStreamReader( System.in );
BufferedReader wej = 
    new BufferedReader(isr );
    String zwrot = null;
    try{
        zwrot = wej.readLine();
    }
    catch(IOException ioe){
     System.err.println("BŁĄD WEJŚCIA");   
    }
    return zwrot;
}//czytajText
}

będa bardzo wdzięczny za pomoc.

0

Mógłbyś wyjaśnić o co ci chodzi ? Podejrzewam, że chcesz posortować tablicę

telefony[] tab

wg jakiegoś analfabetycznego kryterium.
pozdrawiam

0

jeśli dodam 3 nowe telefony z funkcji dodaj to chciałbym żebym miał 3 możliwości wyboru segregacji

1.Marka- analfabetycznie
2.Model- to samo co wyżej
3.nrSeryjny- składa się z samych cyfr i też możliwość ich segregacji

0

czy segregacja == sortowanie ?
czy analfabetyczny == alfabetyczny ?

0

sortowanie :)

bogdans napisał(a)

Mógłbyś wyjaśnić o co ci chodzi ? Podejrzewam, że chcesz posortować tablicę

telefony[] tab

wg jakiegoś analfabetycznego kryterium.
pozdrawiam

0

@Konrad991 napisał

Witam mam problem z kodem na sortowanie "Telefonów": analfabetycznie
, ja tylko powtórzyłem wyróżniając tekst (miałem nadzieję - płonną niestety, że oprzytomniejesz).
Zakładam, (nie byłeś łaskaw ani potwierdzić, ani zaprzeczyć), że chcesz sortować tablicę tab typu telefony[].

  1. Zmień definicję klasy telefony
public class telefony implements Serializable,Comparable<telefony>
{
      .......
      private static int order=1;
      .......
      public void setOrder(int order)
      {
           this.order=order;
      }
      public int compareTo(telefony inny)
      {
           switch(order)
           {
                case 1:
                    return marka.compareTo(inny.getMarka());
                    break;
                case 2:
                    return model.compareTo(inny.getModel());
                    break;
                case 3:
                    return nrSeryjny.compareTo(inny.getNrSeryjny());
                    break;
           }
      }
}

  1. Jak w klasie PetlaGlowna będziesz potrzebował posortowaną tablicę, to zrobisz tak:
   telefony.setOrder(..);
   Arrays.sort(tab);
0

będe wdzięczny jak troszkę jaśniej mi to wytłumaczysz please

1 użytkowników online, w tym zalogowanych: 0, gości: 1