BinarySearch Dictionary

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • mihailmihai484
    New Member
    • Jun 2022
    • 1

    #1

    BinarySearch Dictionary

    Hello everyone, I tried in this code to make a binarysearch dictionary in a text file using ArrayList and socket, but I don't know what happen that I can't do this..?
    Client code:
    Code:
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.Socket;
    import java.util.Scanner;
    import java.util.Arrays;
    
    public class Client {
    
        public static void main(String[] args) {
            int N;
            Scanner sc=new Scanner(System.in);
            Socket cs=null;
            BufferedReader bfr=null;
            PrintWriter pw=null;
            try{
                cs=new Socket("localhost",5000)	 ;
                InputStreamReader isr=
                        new InputStreamReader(cs.getInputStream());
                bfr=new BufferedReader(isr);
                pw=new PrintWriter(cs.getOutputStream());
                System.out.println("S-a setat reteaua");
                for(;;){
    
                    System.out.print("Se introduce cuvantul: ");
                    String cuvant=sc.nextLine();
                    //daca este STOP : se va deconecta
                    if(cuvant.equals("STOP")) {pw.println(""); pw.flush();break;}
                    else  {pw.println(cuvant); pw.flush();}
                    //Citim raspuns server:
                    String textIn=bfr.readLine();
                    if(textIn==null)break;
                    System.out.println(textIn);
                }//for;;
            }catch( IOException e){
                e.printStackTrace();
            }
            System.out.println("Client m-am deconectat !");
        }//main
    }
    ClientHandler:
    Code:
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.Socket;
    import java.util.Scanner;
    import java.util.Arrays;
    
    public class Client {
    
        public static void main(String[] args) {
            int N;
            Scanner sc=new Scanner(System.in);
            Socket cs=null;
            BufferedReader bfr=null;
            PrintWriter pw=null;
            try{
                cs=new Socket("localhost",5000)	 ;
                InputStreamReader isr=
                        new InputStreamReader(cs.getInputStream());
                bfr=new BufferedReader(isr);
                pw=new PrintWriter(cs.getOutputStream());
                System.out.println("S-a setat reteaua");
                for(;;){
    
                    System.out.print("Se introduce cuvantul: ");
                    String cuvant=sc.nextLine();
                    //daca este STOP : se va deconecta
                    if(cuvant.equals("STOP")) {pw.println(""); pw.flush();break;}
                    else  {pw.println(cuvant); pw.flush();}
                    //Citim raspuns server:
                    String textIn=bfr.readLine();
                    if(textIn==null)break;
                    System.out.println(textIn);
                }//for;;
            }catch( IOException e){
                e.printStackTrace();
            }
            System.out.println("Client m-am deconectat !");
        }//main
    }
    Code:
    import java.io.BufferedReader;
    import java.io.FileReader;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.Socket;
    import java.util.ArrayList;
    import java.util.Arrays;
    
    import static java.util.Collections.binarySearch;
    
    //Clasa firului de execuție pentru tratarea clientului conectat la server:
    class FirClient extends Thread {
        private Socket cs;
        private BufferedReader bfr;
        private PrintWriter pw;
        ArrayList<String> listaucvinte;//la creare firului incarcam datele
        // din fisier intr-un ArrayList
    
    
        public FirClient(Socket cs) {
            try {
                this.cs = cs;
                pw = new PrintWriter(cs.getOutputStream());
                InputStreamReader isr =
                        new InputStreamReader(cs.getInputStream());
                bfr = new BufferedReader(isr);
                //incarcam fisierul cuvinte .txt in ArrayList:
                listaucvinte = new ArrayList<String>();
                System.out.println("Se copiaza fisier in al");
                FileReader f = new FileReader("D://date1.txt");
                BufferedReader bf = new BufferedReader(f);
                for (; ; ) {
                    String s = bf.readLine();
                    if (s == null) break;//s-a terminat fisier
                    listaucvinte.add(s);
                }
                listaucvinte.sort(String::compareTo);
                bf.close();
                f.close();
            } catch (Exception e) {
                e.printStackTrace();
                System.exit(1);
            }
        }
    
        public static int CautareBinara(ArrayList<String> listaucvinte, String cuvant) {
            int start = 0;
            int sfarsit = (listaucvinte.size()) - 1;
    
    
            while (start <= sfarsit) {
                int mijloc = start + (sfarsit - start) / 2;
                if (listaucvinte.get(mijloc).compareTo(cuvant) < 0) {
                    start = mijloc + 1;
                } else if (listaucvinte.get(mijloc).compareTo(cuvant) > 0) {
                    sfarsit = mijloc - 1;
                } else {
                    return mijloc;
                }
            }
            return -1;
        }
    
        public void run() {
            try {
                for (;;) {
                    String cuvant = bfr.readLine();
                    if (cuvant == null) break;
                    if (cuvant.equals("")) break;
                    //cautare cuvant in ArrayList:
                    for (int i = 0; i < listaucvinte.size(); i += 2) {
                        String crt = listaucvinte.get(i);
                        int r = CautareBinara(listaucvinte, cuvant);
                        if (r == -1)
                            pw.println("Elementul nu s-a gasit!");
                                   else
                        pw.println("Elementul este prezent la indexul " + cuvant);
                        pw.flush();
                    }
    
    
                }//for;;
            }
            catch(Exception e){e.printStackTrace();}
        }
    }
Working...