Programma sulla scelta di una password [RISOLTO]

di il
4 risposte

Programma sulla scelta di una password [RISOLTO]


/*
 
 Scrivere un programma che chieda l'aggiornamento della password. Il programma 
 deve cheidere l'inserimento della password la quale deve contenere almeno una 
 lettera e un numero e deve essere di 8 caratteri. Il programma deve inoltre richiedere
 l'inserimento della password per confermarla
 
 */


package password;

import java.io.BufferedReader;

import java.io.*;

/**
 *
 * @author bit1015
 */
public class PASSWORD {

    public static String readln() { //simile al cin del C++
        try {
            BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
            return input.readLine();
        } catch (IOException e) {
            System.out.println("Attenzione Errore di input");
            return "";
        }
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

        String PW;


        System.out.println(" Scrivi la PASSWORD ");
        PW = readln();


        if (PW.length() >= 8) {
            

            PW.charAt(index) >= 'A' && PW.charAt(index) <= 'Z';

        } 
        // DA QUI IN POI SONO BLOCCATO
        else {
            
            System.out.println(" La password deve essere lunga almeno 8 caratteri ");
        }
    }
}

Io sono bloccato, veramente non so come andare avanti. Uno spunto?

4 Risposte

  • Re: Programma sulla scelta di una password [RISOLTO]

    Premessa: non voglio certo sostituirmi al moderatore, ci mancherebbe, ma un titolo "PASSWORD" non è il massimo ... cerca di mettere titoli più significativi!

    Torniamo ora alla tua questione:

    Apla ha scritto:


    deve essere di 8 caratteri
    Deduco che deve essere esattamente 8 caratteri, quindi dovresti testare == 8 o != 8 (a seconda di come metti i rami nel if). Mentre adesso hai testato >= 8

    Apla ha scritto:


    deve contenere almeno una lettera e un numero
    Devi per forza scansionare i caratteri con un ciclo (for). Puoi farlo con un ciclo solo o con due separati, anche qui dipende da come imposti la logica dei test.

    Ti suggerirei di fare dei piccoli metodi statici che fanno singolarmente ciascuna di queste verifiche. Così se trovi subito una lettera (o numero) ritorni subito true (=ok), altrimenti finito il ciclo ritorni false (=non valido)
  • Re: Programma sulla scelta di una password [RISOLTO]

    Ok grazie mille degli spunti non mi erano venuti in mente in effetti è la cosa più sensata da fare ok grazie ora provo e poi ti facio sapere
  • Re: Programma sulla scelta di una password [RISOLTO]

    Ti conviene utilizzare le librerie già presenti in java (java.lang.Character.*) e creare un metodo che prende in input una stringa e ti ritorna true se è valida (soddisfa i tuoi requisiti) o false altrimenti.
    
        public boolean isValid(String pass) {
            int minLenght = 8;
            boolean maiuscola = false;
            boolean minuscola = false;
            boolean numero = false;
            if (pass.length()>=minLenght) { //se vuoi mettere che sia per forza 8 metti == anziché >=
                for (int i = 0; i<pass.length(); i++) {
                    if (isDigit(pass.charAt(i))) {
                        numero = true;
                    } else {
                        if (isLowerCase(pass.charAt(i))) {
                            minuscola = true;
                        } else {
                            if (isUpperCase(pass.charAt(i))) {
                                maiuscola = true;
                            }
                        }
                    }
                }
            } else {
                return false;
            }
            return (maiuscola && minuscola && numero);
        }
    
  • Re: Programma sulla scelta di una password [RISOLTO]

    
    /*
     
     Scrivere un programma che chieda l'aggiornamento della password. Il programma 
     deve chidere l'inserimento della password laqale deve contenere almeno una 
     lettera e/o un numero e deve essere di 8 caratteri
     
     */
    package password;
    
    import java.io.BufferedReader;
    
    import java.io.*;
    
    /**
     *
     * @author bit1015
     */
    public class PASSWORD {
    
        public static String readln() { //simile al cin del C++
            try {
                BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
                return input.readLine();
            } catch (IOException e) {
                System.out.println("Attenzione Errore di input");
                return "";
            }
        }
    
        /**
         * @param args the command line arguments
         */
        
    // _____________________________________________________________________________ 
    
    // INIZIO PROGRAMMA
        
    // _____________________________________________________________________________  
        
        
        public static void main(String[] args) {
            
            
            String password, password2;
            
            final byte LMIN = 8;
            
            boolean LunOk = false;
            
            boolean charOk = false;
            
            boolean numOk = false;
            
            while(true)
            {
            System.out.println();        
            System.out.println("inserisci la password ");
            password = readln();
            
            //controllo lunghezza
            
            if (password.length() >= LMIN) {
                LunOk = true;
                
            } 
            else {
                System.out.println();
                System.out.println("Errore lunghezza minima " + LMIN + " caratteri.");
            }
    
            //controllo carattere
            
            for (int i = 0; i < password.length(); i++) {
                
                if ((password.charAt(i) >= 'a' && password.charAt(i) <= 'z')
                        || (password.charAt(i) >= 'A' && password.charAt(i) <= 'Z')) {
                    charOk = true;
                }
                
                
                //controllo numeri
                
                if (password.charAt(i) >= '0' && password.charAt(i) <= '9') {
                    numOk = true;
                }
            }
            
            if (!numOk) {
                System.out.println();
                System.out.println("ci deve essere almeno un numero");
            }
            
            if (!charOk) {
                System.out.println();
                System.out.println("ci deve essere almeno una lettera");
            }
    
            
            if (LunOk && charOk && numOk) {
                System.out.println();
                System.out.println("conferma nuova password");
                password2 = readln();
                
                if (password.equals(password2)) {
                    System.out.println();
                    System.out.println("password cambiata con successo in '" + password2 + "'");
                    System.exit(0);
                } 
                else 
                
                {
                    System.out.println();
                    System.out.println("le password non coincidono");
                }
            }
    
        }
        }
    }
        
    
    Grazie al tuo spunto, ho risolto mille grazie potete chiudere
Devi accedere o registrarti per scrivere nel forum
4 risposte