Ciąg znaków,

dwroblew
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Frankfurt am Main (Germany)
  • Postów: 50
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

atmal
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 913
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.

  • Rejestracja: dni
  • Ostatnio: dni
0

wyrażenie regularne

Kopiuj
String Str = new String("abc");
string.matches("[a-z]");
dwroblew
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Frankfurt am Main (Germany)
  • Postów: 50
0

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

atmal
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 913
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:

Kopiuj
return numberOfDigits >= 2 && hasUpperCase;
dwroblew
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Frankfurt am Main (Germany)
  • Postów: 50
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();
    }
    
}

}

dwroblew
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Frankfurt am Main (Germany)
  • Postów: 50
0

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

WeiXiao
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 5226
0

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

atmal
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 913
0

Ta konstrukcja:

Kopiuj
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.

dwroblew
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Frankfurt am Main (Germany)
  • Postów: 50
0

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

dwroblew
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Frankfurt am Main (Germany)
  • Postów: 50
0

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.