Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2017
    Messaggi
    5

    Ricerca di un elemento in un arraylist

    Salve a tutti,
    sto cercando di creare un metodo per l'autenticazione di un utente, tramite l'inserimento di username e password. Il mio file.txt contiene le seguenti informazioni: username, password, nome e cognome. Riesco a far inserire sia username che password e a farmi restituire "Password non valida" nel caso in cui la password inserita dall'utente non corrisponda a quella dell'username. Il mio problema è che non riesco a farmi restituire "Username non valida" solo nel caso in cui nel file non sia presente l'username inserito, nemmeno se provo a inserire tutte le parole in un array e poi leggere l'array. Come posso fare?

    codice:
    public void loginL() {
            String id;
            System.out.println("Username:");
            Scanner i = new Scanner(System.in);
            id = i.nextLine();
            
            FileInputStream fstream = null; 
            DataInputStream in = null;
            
            try {
               // apro il file
               fstream = new FileInputStream("lettori.txt");
           
               // prendo l'inputStream
               in = new DataInputStream(fstream);
               BufferedReader br = new BufferedReader(new InputStreamReader(in));
               String strLine;
               ArrayList<String> par = new ArrayList<>();
               
               // Leggo il file riga per riga
               while ((strLine = br.readLine()) != null) {
                   
                  if(strLine.contains(id)){
                     // se la riga è uguale a quella ricercata
                      String p;
                      System.out.println("Password:");
                         Scanner ps = new Scanner(System.in);
                        p = ps.nextLine();
                        
                        if (strLine.contains(p)) {
                            System.out.println("Autenticazione eseguita con successo!");
                            System.out.println(strLine);
                        } else {
                          System.out.println("Password non valida");
                      }
                        ps.close();
                  } 
                  else {
                  }
                    String[] strings=strLine.split("    ");
                    String ide=strings[0]; 
                    String password=strings[1]; 
                    String nome=strings[2];
                    String cognome=strings[3];
                  
                    par.add(ide);
                    par.add(password);
                    par.add(nome);
                    par.add(cognome);
                  }
                  if (!par.equals(id)) {
                       System.out.println("Username non valida");
                   }
               fstream.close();
               in.close();
            } catch (Exception e) {
               e.printStackTrace();
            }  
            i.close();
        }

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da mrx19 Visualizza il messaggio
    sto cercando di creare un metodo per l'autenticazione di un utente, tramite l'inserimento di username e password. Il mio file.txt contiene le seguenti informazioni: username, password, nome e cognome.
    Il tuo codice non è affatto buono per diversi motivi di "design" (che ora non sto a discutere). Ma il test:

    if(strLine.contains(id)){

    non è comunque sensato/utile. Stai cercando il id passato in input all'interno di tutta la riga. Vuol dire che se l'utente ha inserito lo username "ippo" tu beccherai anche gli utenti pippo, ippopotamo ecc....
    Quindi questo test e il suo else non hanno molto senso.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2017
    Messaggi
    5
    Hai perfettamente ragione, non sono molto pratica di Java quindi non ne avevo idea. Grazie mille!
    Ha senso inserire il file in un array di array e cercare le parole all'interno di questo array?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Quote Originariamente inviata da mrx19 Visualizza il messaggio
    Hai perfettamente ragione, non sono molto pratica di Java quindi non ne avevo idea. Grazie mille!
    Ha senso inserire il file in un array di array e cercare le parole all'interno di questo array?
    Tra l'altro quel tuo ArrayList<String> par non ha neanche senso perché gli stai facendo contenere più dati promiscui nome, cognome, ecc...
    Quindi pure quel if (!par.equals(id)) non ha senso.

    Se intendi ri-leggere il file ad ogni login, è sufficiente leggere riga per riga, estrarre le parti e verificarle (username/password di certo).

    P.S. separa i dati nel file con un separatore specifico (es. ";"), non con lo spazio.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.