Java feladatban szeretnék segítséget?!
Eddigi meglévő programom.
------------------------------------------------------
import javax.swing.JOptionPane;
public class FelhaszJelszEllen {
public static void main(String[] args) {
String felhasznalonev = JOptionPane.showInputDialog("Felhasznalonev:");
String jelszo = JOptionPane.showInputDialog("Jelszo");
int eletkor = Integer.parseInt(JOptionPane.showInputDialog("Eletkor"));
if (
felhasznalonev != null && jelszo != null &&
(
(((felhasznalonev.equals("fuli") || felhasznalonev.equals("FULI")) && jelszo.equals("kardhal") && eletkor >= 18)
||
((felhasznalonev.equals("laci") || felhasznalonev.equals("LACI")) && jelszo.equals("pajzs") && eletkor >= 18))
)
)
{
JOptionPane.showMessageDialog(null, "Bent vagy.");
} else {
JOptionPane.showMessageDialog(null, "Gyanus vagy.");
}
}
}
-----------------------------------------------------
1. Szeretném az int eletkor deklarálásomat is nem egyenlővé tenni a semmivel az if után, de hibát jelez, ha ezt megpróbálnám beírni a && után ,,eletkor =! null &&" (Lefut enélkül is, de amint az utolsó felugró ablakban az életkorhoz nem írok semmit, akkor hibát ír ki, ezt szeretném kiküszöbölni)
2.Úgy kéne módosítanom a kódot, hogyha a mégse gombra kattintanék bármelyiknél, akkor a program egy ,,Nincs eleg informacio!" üzenettel reagáljon. (Ebbe is belekezdtem ,de nem tetszett neki, hogy felhasznalonev.equals(null)..)
Köszönöm a segítségeteket előre is!
E.
Az int primitív típus, nem állítható null-ra.
Beállíthatod mondjuk kezdetben -1-re:
int eletkor = -1
eletkor = Integer.parseInt(JOptionPane.showInputDialog("Eletkor"));
És a feltételben vizsgálod, hogy nagyobb-e, mint -1.
Vagy Integer eletkor -t használsz, az Integer felvehet null-t.
De ha teheted int-et használj.
"nem tetszett neki, hogy felhasznalonev.equals(null)"
Nem, mert az equals két stringet hasonlít össze.
nullal így tudod összevetni:
"felhasznalonev != null"
" az Integer.parseInt(string) hogy nem dob kivételt null"
Hibát dob.
Ez viszont már le se fordul:
"eletkor =! null"
Huh, nem magyarázom, de valahogy így:
package com.gyk;
import javax.swing.JOptionPane;
public class FelhaszJelszEllen {
public static void main(String[] args) {
String felhasznalonev = JOptionPane.showInputDialog("Felhasznalonev:");
String jelszo = JOptionPane.showInputDialog("Jelszo");
int eletkor = -1;
try {
eletkor = Integer.parseInt(JOptionPane.showInputDialog("Eletkor"));
} catch (NumberFormatException nfe) {
// TODO: handle exception
}
if( felhasznalonev != null && jelszo != null && eletkor>=18 && (
felhasznalonev.equalsIgnoreCase("fuli") && jelszo.equals("kardhal")
|| felhasznalonev.equalsIgnoreCase("laci") && jelszo.equals("pajzs")
)) {
JOptionPane.showMessageDialog(null, "Bent vagy.");
} else {
JOptionPane.showMessageDialog(null, "Gyanus vagy.");
}
}
}
Opsz a kérdésed második pontját is figyelembe véve:
import javax.swing.JOptionPane;
public class FelhaszJelszEllen {
public static void main(String[] args) {
String felhasznalonev = JOptionPane.showInputDialog("Felhasznalonev:");
String jelszo = JOptionPane.showInputDialog("Jelszo");
String kor =JOptionPane.showInputDialog("Eletkor");
if( felhasznalonev == null || jelszo == null || kor==null) {
JOptionPane.showMessageDialog(null, "Nincs eleg informacio!");
return;
}
int eletkor = -1;
try {
eletkor = Integer.parseInt(kor);
} catch (NumberFormatException nfe) {
JOptionPane.showMessageDialog(null, "Hibas az eletkor! (Nem szam.)");
return;
}
if( eletkor>=18 && (
felhasznalonev.equalsIgnoreCase("fuli") && jelszo.equals("kardhal")
|| felhasznalonev.equalsIgnoreCase("laci") && jelszo.equals("pajzs")
)) {
JOptionPane.showMessageDialog(null, "Bent vagy.");
} else {
JOptionPane.showMessageDialog(null, "Gyanus vagy.");
}
}
}
1. try
2. catch (NumberFormatException nfe)
3. return;
4. equalsIgnoreCase
Ez a 4 pont, miként működik a javaban? Értem, mint tükörordítást, de a javaban, hogy működnek?
Köszönöm a segítségeteket, nagyok vagytok!
A programozás lényege, hogy sokat használd a google-t :)
1. try
2. catch (NumberFormatException nfe)
Itt egy hülye példa:
boolean isHiba = false;
int eletkor = -1;
try {
eletkor = Integer.parseInt(JOptionPane.showInputDialog("Eletkor"));
} catch (NumberFormatException nfe) {
isHiba = true;
}
A try belsejében van a főág, bekéri az életkort.
Ha hiba lép fel, a beadott string nem konvertálható számmá, akkor kivétel dobódik.
A kivételt elkapja a catch blokk, és beállítja, amit kell, pl újra feldobhatod az ablakot addig míg jó értéket nem adnak be.
Ha nincs catch blokk, ami elkapja a kivételt, akkor a program futása véget ér.
3. return;
A függvény visszatér.
Ha a függvény void, akkor return;-el véget vethetsz a futásának.
Ha a függvény nem void, akkor értéket is kell visszaadni: return valami;
4. equalsIgnoreCase
Amit a neve mond, összevet két stringet nagybetű függetlenül
Ez false:
"cica".equals("Cica")
Ez true:
"cica".equalsIgnoreCase ("Cica")
Lenne egy másik feladathoz kérdésem.
Itt feltehetem, nézi még valaki?!
Köszönöm!
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!