Vad är det för fel på min kod? (Java)

Permalänk
Medlem

Vad är det för fel på min kod? (Java)

Problemet som jag får är att oavsett vad man skriver in i början så blir rodprickig (en boolean) true och jag har ingen aning om varför.

Det är förövrigt uppgift i ett diagnostiskt prov i skolan.

import javax.swing.*; import java.util.*; public class programett { public static void main (String[] arg) { //Skapa Objekt Groda grodan_Olle = new Groda(); Groda grodan_Sven = new Groda(); Groda grodan_Anna = new Groda(); //Fråga användaren hur Olle ska se ut. String Olle = JOptionPane.showInputDialog("Är Olle rödprickig och hur lång är han? Svara med Ja/Nej mellanslag längd i cm"); //Omvandla resultatet till enskilda variabler StringTokenizer stok = new StringTokenizer(Olle); String OllesHud = stok.nextToken(); double OllesLangd = Double.parseDouble(stok.nextToken()); //Skickar resultaten till grodan_Olle grodan_Olle.langd_i_cm = OllesLangd; //Kollar om grodan är rödprickig if (OllesHud.equalsIgnoreCase ("Ja")) grodan_Olle.rodprickig = false; if (OllesHud.equalsIgnoreCase ("Nej")); grodan_Olle.rodprickig = false; if (grodan_Olle.rodprickig = false) grodan_Olle.hudkoll = "rödprickig"; if (grodan_Olle.rodprickig = true) grodan_Olle.hudkoll = "inte rödprickig"; //Skrivet ut JOptionPane.showMessageDialog(null, "Olle är " + grodan_Olle.langd_i_cm + " cm och hans hud är " + grodan_Olle.hudkoll); } } class Groda{ boolean rodprickig; double langd_i_cm = 0; String hudkoll; }

Permalänk
Medlem

//Kollar om grodan är rödprickig if (OllesHud.equalsIgnoreCase ("Ja")) grodan_Olle.rodprickig = false; if (OllesHud.equalsIgnoreCase ("Nej")); grodan_Olle.rodprickig = false;

borde inte en av dessa två if-satser sätta grodan_Olle.rodprickig till true?

if (grodan_Olle.rodprickig = false) grodan_Olle.hudkoll = "rödprickig"; if (grodan_Olle.rodprickig = true) grodan_Olle.hudkoll = "inte rödprickig";

borde det inte vara tvärtom här?

Du får alltså alltid meddelandet att grodan Olle inte är rödprickig, om jag förstår dig rätt?

Visa signatur
Permalänk
Medlem

som koden ser ut nu får han väl alltid meddelandet att Olle är rödprickig?

Visa signatur

The power of GNU compiles you!
"Often statistics are used as a drunken man uses lampposts -- for support rather than illumination."

Permalänk
Medlem

ska du inte ha en konstruktor i "Groda" också?

Permalänk
Medlem

Vet inte hur det är i java men i c++ måste du skriva == när du jämnför, kanske det som är problemet?

Citat:

if (grodan_Olle.rodprickig = true)
grodan_Olle.hudkoll = "inte rödprickig";

Visa signatur

Ovanstående text innehåller endast medvetna stavfel.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av dataper

//Kollar om grodan är rödprickig if (OllesHud.equalsIgnoreCase ("Ja")) grodan_Olle.rodprickig = false; if (OllesHud.equalsIgnoreCase ("Nej")); grodan_Olle.rodprickig = false;

borde inte en av dessa två if-satser sätta grodan_Olle.rodprickig till true?

if (grodan_Olle.rodprickig = false) grodan_Olle.hudkoll = "rödprickig"; if (grodan_Olle.rodprickig = true) grodan_Olle.hudkoll = "inte rödprickig";

borde det inte vara tvärtom här?

Du får alltså alltid meddelandet att grodan Olle inte är rödprickig, om jag förstår dig rätt?

Jo, det var grej jag gjorde för att testa om det kunde bli false.

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av mushr00m
Vet inte hur det är i java men i c++ måste du skriva == när du jämnför, kanske det som är problemet?

Jo det måste man, lägg till ett extra likhetstecken i if-satserna så funkar det nog ska du se.
Fast egentligen behöver du ju inte ha några likhetstecken över huvudtaget. Eftersom du kollar om en boolean är sann eller falsk så räcker det att skriva:
if(rödprickig)
{
}

Om rödprickig är sann fortsätter den in i if-satsen, är rödprickig falsk så hoppar den över den.