Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Ošetření vstupu

Aktivity
Avatar
Nikol Srničková:28.3.2018 10:47

Ahoj, napsala jsem si program k šifrování a dešifrování, ale mám problém s ošetřením uživatelského vstupu. Potřebuju, aby uživatel mohl zadat jen písmenka. Když se tak nestane, měla by se mi do labelu vypsat chyba. Zkoušela jsem to pomocí klauzule if a kódu ASCII, ale bohužel nefunguje. Dokázal by mi někdo poradit?
Jinak nejpíše ten kód není asi úplně tak jak by měl, ale jsem začátečník, teprve se učím.:)

@FXML
private void handleSifrovat­ButtonAction(Ac­tionEvent event) {
String zadani = zadaniTextFiel­d.getText();
String zpusob = (String) zpusobComboBox­.getSelection­Model().getSe­lectedItem();
String vysledek;
vysledek = ("");

switch(zpusob){
case "Posun o 1":
int posun1 = 1;
for (char c : zadani.toCharA­rray()){
int i = (int)c;
if (((int)c <= 64) && ((int)c >= 123))
zpravaLabel.set­Text("Špatné zadání! Použijte pouze písmena");
else
i += posun1;
if (i > (int)'z') {
i -= 26;}
char znak = (char)i;
vysledek += znak;
}
break;
case "Posun o 2":
int posun2 = 2;
for (char c : zadani.toCharA­rray()){
int i = (int)c;
i += posun2;
if (i > (int)'z') {
i -= 26;
}
char znak = (char)i;
vysledek += znak;
}
break;
}
vysledekTextFi­eld.setText(Strin­g.valueOf(vys­ledek));
}

 
Odpovědět
28.3.2018 10:47
Avatar
Odpovídá na Nikol Srničková
Petr Štechmüller:28.3.2018 11:11

Ahoj, máš špatně postavenou podmínku na testování, zda-li se jedná o písmeno, nebo něco jiného.

if (((int)c <= 64) && ((int)c >= 123))

Tato podmínky nikdy nebude splněna.
Ta podmínka doslova říká:

pokud proměnná c je (menší nebo rovna hodnotě 64) A ZÁROVEŇ (větší nebo rovna hodnotě 123)

Vyměň && za || a začne to fungovat.

Nahoru Odpovědět
28.3.2018 11:11
Pokud spolu kód a komentář nekorespondují, budou patrně oba chybné
Avatar
DHPICO
Tvůrce
Avatar
Odpovídá na Nikol Srničková
DHPICO:28.3.2018 11:15

nejlehčí to je pomocí regulárního výrazu, kdy se zeptáš:

if (input.matches("[a-zA-Z]+")) {
//správně
 } else {
//špatně
 }

nebo

if (input.chars().allMatch(Character::isLetter))
Editováno 28.3.2018 11:17
Nahoru Odpovědět
28.3.2018 11:15
Požehnáni budíš oráj
Avatar
Nikol Srničková:28.3.2018 13:08

Děkuju, funguje. :)

 
Nahoru Odpovědět
28.3.2018 13:08
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.