Sprawdzanie czy znak jest cyfrą

0

Mam kod, który sprawdza czy przypadkiem w string`u 'imie' nie znajduje się jakaś liczba lub biały znak. Lecz ten kod bez względu na to czy jest jakaś liczba czy nie i tak wyświetla instrukcję z "W imieniu nie moga znajdowac sie liczby ani znaki specjalne!". Chodzi o część kodu w metodzie 'rejestracja'.

import java.util.Scanner;
 
public class Projekt
{
    static private int PIN, kod_dostepu, rok_urodzenia;
    static private int stan_konta = 0;
    static private String imie, nazwisko;
     
    static private int wybor, wybrany_numer;
     
    static Scanner input = new Scanner(System.in);
     
    public static boolean hello_menu()
    {
        System.out.println("===== BANKOMAT =====");
        System.out.println("");
        System.out.println("");
         
        System.out.println("1. Zaloguj");
        System.out.println("2. Zarejestruj");
        System.out.println("");
        System.out.print("Wybor: ");
         
        wybor = input.nextInt();
         
        if(wybor == 1)
        {
            wybrany_numer = 1;
            return true;
        }
        if(wybor == 2)
        {
            wybrany_numer = 2;
            return true;
        }
         
        return false;
    }
     
    public static void rejestracja() throws InterruptedException
    {       
        char[] char_imie;
        int licznik = 0;
         
        System.out.println("===== REJESTRACJA =====");
        System.out.println("");
        System.out.println("");
         
        /////////////////////////////////////////////
        while(true)
        {
            System.out.print("Imie: ");
            imie = input.next();
             
            char_imie = imie.toCharArray();
             
            for(int i = 0; i < imie.length(); ++i)
            {
                if(isDigit(char_imie[i]) || isWhitespace(char_imie[i]))
                {}
                else
                {licznik++;break;}
            }
             
            if(licznik > 0)
            {
                System.out.println("W imieniu nie moga znajdowac sie liczby ani znaki specjalne!");
                Thread.sleep(2000);
                licznik = 0;
            }
            else
                break;
        }
        /////////////////////////////////////////////
        System.out.print("Nazwisko: ");
        nazwisko = input.next();
    }
 
    private static boolean isDigit(char c)
    {
        return false;
    }
     
    private static boolean isWhitespace(char c)
    {
        return false;
    }
 
    public static void main(String[] args) throws InterruptedException
    {
        while(true)
        {
            if(hello_menu())
            {
                if(wybrany_numer == 1)
                {
                     
                }else if(wybrany_numer == 2)
                {
                    System.out.println("");
                    System.out.println("");
                    System.out.println("");
                     
                    rejestracja();
                }
            }
            else
            {
                System.out.println("Podano zly numer!");
                Thread.sleep(2000);
                System.out.println("");
                System.out.println("");
                System.out.println("");
            }
        }
    }
}
0

Bo kod jest źle napisany? Generalnie cały ten kod to jakaś mogiła i do zaorania, ale to:

                if(isDigit(char_imie[i]) || isWhitespace(char_imie[i]))
                {}
                else
                {licznik++;break;}

W ogóle nie ma sensu (nawet gdyby te funkcje isDigit i isWhitespace były zaimplementowane) bo robi dokładnie na odwrót niż miało...

0

Z tego co zauważyłem nie potrafisz posługiwać się instrukcjami if i else
Protip:
If - kod pod if jest wykonywany gdy if zostanie spełniony tj. true
else - wykonywane jest gdy if nie zostało spełnione tj. false
A więc jeżeli twoje funkcje zwracają zawsze false (Nie wiem po co ci takie funkcje ale może dopiero je tworzysz) to zostaje wykonana część kody po else a więc zmienna licznik zawsze zostanie podniesiona o 1.
Wystarczy:

 
 if(isDigit(char_imie[i]) || isWhitespace(char_imie[i]))
  {licznik++;break;}
0

Takie sprawdzanie znak po znaku bym odradzał, lepiej niech wpisze całego stringa i potem coś z nim możesz majstrować, np żeby sprawdzić czy zawiera cyfry to możesz użyć wyrażenia regularnego imie.matches(".*\\d+.*");, a czy zawiera białę spacje to raczej bym odpuścił sprawdzanie, po prostu trimuj go na początku

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