Ciąg znaków,

0

Hej,
mam pytanie. Dla wielu pewno okaże się banalne, ale kto nie pyta nie błądzi. Niestety w dostępnych materiałach w internecie nie znalazłem odpowiedzi. Tworzę program do logowania, i chciałbym w podanym haśle wychwycić cyfry oraz duże litery. Pomoże ktoś? Czy ma Java w swojej bibliotece metody którymi mógłbym się posłużyć?
Dzięki wielkie

1

Klasa Character ma statyczne metody isDigit oraz isUpperCase. Można zrobić pętlę która sprawdzałaby każdy znak po kolei używając tych właśnie metod.

0

wyrażenie regularne

String Str = new String("abc");
string.matches("[a-z]");
0

problem polega na tym ,że muszę sprawdzić czy hasło podane ma przynajmniej dwie cyfry i conajmniej jedną dużą literę

1

Zrób licznik cyfr oraz boolean dla dużej litery (true gdy znaleziono w haśle dużą literę).
Po skończeniu pętli zwracasz true jeżeli licznik jest równy lub większy niż 2 i gdy w haśle występuje duża litera, w przeciwnym razie - wiadomo - false. Zamiast if możesz zrobić tak:

return numberOfDigits >= 2 && hasUpperCase;
0

import java.util.*;

public class Logowanie {
public static void main(String[] args) {

    Scanner haslo = new Scanner(System.in);


    System.out.println("podaj hasło");
    String noweHaslo = haslo.next();
    try {
        werfikacjaHasla(noweHaslo);

    } catch (BladPierwszy bladPierwszy) {

    } catch (BladDrugi bladDrugi) {

    } catch (BladTrzeci bladTrzeci) {

    }


}

public static void werfikacjaHasla(String noweHaslo) throws BladPierwszy, BladDrugi, BladTrzeci {
    char duzaLitera;
    char cyfra;

    if (noweHaslo.length() < 9) {
        throw new BladPierwszy();
    }
    for (int i = 0; i < noweHaslo.length(); i++) {
        duzaLitera = noweHaslo.charAt(i);
        cyfra = noweHaslo.charAt(i);
        if (Character.isUpperCase(duzaLitera)) {
            if (Character.isDigit(cyfra)) {

            }
            else throw new BladDrugi();

        }
        else throw new BladTrzeci();
    }
    
}

}

0

napisałem to w ten sposób , ale niestety coś nie działa

0

Dlaczego logika twojego programu jest aż tak napakowana wyjątkami?:>

0

Ta konstrukcja:

if (Character.isUpperCase(duzaLitera)) {
    if (Character.isDigit(cyfra)) {

    }
    else throw new BladDrugi();

}
else throw new BladTrzeci();

sprawiłaby (gdyby była poprawnie napisana) że pierwsza napotkana mała litera wyrzuciła by wyjątek BladTrzeci(), a przecież za nią mogą być duże litery.
Zauważ że isDigit() znajduje się w środku isUpperCase - oznacza to że znak musiałby być jednocześnie dużą literą oraz cyfrą aby 2 if się spełnił.

Zwróć uwagę że duzaLitera oraz cyfra są takie same - w takim wypadku wystarczy jedna zmienna. Nie widzę też potrzeby deklarowania jej poza pętlą.

Brakuje u Ciebie w kodzie zmiennych o których mówiłem wcześniej, a te są wymagane bo musisz najpierw sprawdzić wszystkie znaki w haśle, dopiero potem możesz powiedzieć czego w nim brakuje.

0

bo temat z którym zadanie jest powiązane to są wyjątki. Jest to w ramach ćwiczenia

0

na dziś się poddaję, dzięki wielkie za pomoc

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