JAVA: hjälp med if-satser (SIMPELT)

Permalänk
Medlem

JAVA: hjälp med if-satser (SIMPELT)

Jag har pluggat java ett tag. Inte allt för länge men ändå.

Det är dock en grej som jag inte fått haj på.
Jag kan absolut inte förstå hur jag inte kunnat lära mig detta tills nu men så här är problemet.

Jag vill skriva en kod som ska säga "Du är ful" när jag skriver ful.

T.ex

String utseende = JOptionPane.showInputDialog("Är du ful eller snygg?"); if (utseende == ful) { JOptionPane.showMessageDialog(null, "Du är ful") } else if (utseende == snygg) { JOptionPane.showMessageDialog(null, "Du är snygg") }

Något sådant.
Men det står bara att ful eller snygg inte har något värde.
Som om jag försöker hämta ut värdet ur en variabel som heter ful eller snygg.

Då undrar jag, hur gör jag för att kunna ange ful eller snygg och få if-satsen att fungera?

Obs. Jag vet hur man skulle lösa detta om man kunde ange "1" eller "2", alltså siffror. Men inte när värdet är ett ord.

Mvh

Visa signatur

Samsung TFT 22" 2233RZ Svart 120HZ - 640GB Western Digital Black 64MB SATA III - Corsair 4GB (2x2048MB) 1333MHz XMS3-10600 - AMD Phenom2 X4 965 3,4GHz Black Edition - Gigabyte GeForce GTX 460 1GB OC - Fractal Design Define R3, Svart - Corsair TX 650W 80+ - Gigabyte GA-870A-UD3 - Cooler Master Hyper 212 Plus

Permalänk
Medlem

menar du if (val equals("Ful))

eller hur ska det skrivas?

Visa signatur

Samsung TFT 22" 2233RZ Svart 120HZ - 640GB Western Digital Black 64MB SATA III - Corsair 4GB (2x2048MB) 1333MHz XMS3-10600 - AMD Phenom2 X4 965 3,4GHz Black Edition - Gigabyte GeForce GTX 460 1GB OC - Fractal Design Define R3, Svart - Corsair TX 650W 80+ - Gigabyte GA-870A-UD3 - Cooler Master Hyper 212 Plus

Permalänk
Medlem

Okej. Nu fick jag inget felmeddelande iallafall när jag körde == "ful"
Men däremot så får jag inte upp den rutan som ska visas i if-satsen

Visa signatur

Samsung TFT 22" 2233RZ Svart 120HZ - 640GB Western Digital Black 64MB SATA III - Corsair 4GB (2x2048MB) 1333MHz XMS3-10600 - AMD Phenom2 X4 965 3,4GHz Black Edition - Gigabyte GeForce GTX 460 1GB OC - Fractal Design Define R3, Svart - Corsair TX 650W 80+ - Gigabyte GA-870A-UD3 - Cooler Master Hyper 212 Plus

Permalänk
Medlem

utseende.equals("ful") ska det vara

Visa signatur

I'm Winston Wolfe. I solve problems.

Permalänk
Medlem

Där satt den
Jag bugar och bockar

Nu kan jag äntligen gå vidare!

Visa signatur

Samsung TFT 22" 2233RZ Svart 120HZ - 640GB Western Digital Black 64MB SATA III - Corsair 4GB (2x2048MB) 1333MHz XMS3-10600 - AMD Phenom2 X4 965 3,4GHz Black Edition - Gigabyte GeForce GTX 460 1GB OC - Fractal Design Define R3, Svart - Corsair TX 650W 80+ - Gigabyte GA-870A-UD3 - Cooler Master Hyper 212 Plus

Permalänk
Medlem

EDIT: Såg att det löste sig..

Visa signatur

3900XT - Dark Rock 4 PRO, 48GB 3600mhz, KFA2 RTX3080ti - Phanteks Evolve - RM850x
LG OLED C9 - Samsung Odyssey G9 - Rival 650 wireless - Xtrfy K4
Bärbart: Macbook Pro 15 - i7 2018 & Huawei Matebook 3K - i5 2020 - EGPU: TUF 3070 RTX
Ljud: focusrite 2i2 - KRK rokit RPG5 - sE 2200a
Klav: Akai MPK249, MPD226 & MPK mini

Permalänk
Medlem

Om man ska ge en djupare förståelse kan man säga att == i Java alltid jämför om två objekt har samma minnesadress (eller ja, adress till placering i heapen) dvs.

String a = "apa"; String b = a; // a och b har samma "adress" String c = "apa"; if(a == b) // A och B är referenser till samma objekt if(a == c) // Kommer inte vara sant, även om objekten som pekas ut av // A och C har samma värde, pekar de inte på samma objekt. if(a.equals(c)) // Kommer att vara sant, värdet på objekten som A och C pekar // ut är de samma

Det här gäller självklart inte de enkla datatyperna int, double osv, utan där betyder == kort och gott "är det samma värde?", detta eftersom dessa inte lagras så att de "pekas ut", utan det är värdet som skickas runt.

Vidare kan man i många språk (men Java är inte ett av dem) omdefinera == till att betyda något annat, tex i C# och C++ betyder == "är det samma värde?", för string.