Avatar billede Bennysørensen Praktikant
14. juli 2003 - 01:42 Der er 10 kommentarer og
1 løsning

Simpelt problem med metodekald og løkker

Jeg har ikke helt fanget, hvorfor dét her ikke virker...
IfElse() bliver aldrig kaldt, og jeg troede at dét skete ved initialiseringen af objektet (?) nede i main()...?

Desuden kommer bliver else-løkken også kørt, selvom jeg prøver at sætte variablerne selv.

public class IfElse
{
    private boolean isEt = false;
    private boolean isTo = false;
    private boolean isTre = false;
    private boolean isFire = false;
           
    public void IfElse()
    {
        isEt = true;
        return;
    }
    public void Lokker()
    {
        if (isEt)
          System.out.println("Tallet er 1");
        if (isTo)
            System.out.println("Tallet er 2");
        if (isTre)
            System.out.println("Tallet er 3");
        if (isFire)
            System.out.println("Tallet er 4");
        else
            System.out.println("Programmet er itu");
    }
    public static void main (String args[])
    {
      IfElse test;
      test = new IfElse();
      test.Lokker();
    }
}
Avatar billede squashguy Nybegynder
14. juli 2003 - 01:55 #1
prøv lige at fjerne void foran constructoren

public IfElse()
    {
        isEt = true;
        return;
    }
Avatar billede Bennysørensen Praktikant
14. juli 2003 - 02:15 #2
Godt...dét får det så til at virke, sådan halvvejs. Jeg har stadig et problem med at Else-statementet hele tiden bliver kørt. Jeg har lavet en Switch, der fungerer et stykke hen ad vejen:

public void value(int str)
    {
        s = str;
        switch (s)
        {
        case 1:
            isEt = true;
            break;
            case 2:
                isTo = true;
                break;
                case 3:   
                    isTre = true;
                    break;
                    case 4:
                        isFire = true;
                        break;
            default:
                System.out.println("Default");
        }
    }

  public static void main (String args[])
    {
      IfElse test;
      test = new IfElse();
      test.value(2);
      test.Lokker();
    }

...men dén der Else-satan bliver ved med at poppe op.

Er der en simpel forklaring på hvorfor det virker, når main fjerner void?

Venligst
Avatar billede Bennysørensen Praktikant
14. juli 2003 - 02:15 #3
...ups...når MAN fjerner void fra IfElse()?
Avatar billede squashguy Nybegynder
14. juli 2003 - 02:37 #4
Din else kører kun på den sidste if. Dvs. hvis isFire er false bliver else afviklet. Du skal bruge "else if".

En constructor kan ikke returnere en værdi, hvorfor man heller ikke kan gøre brug af void.

HVIS du bruger void laver du en member funktion som hedder IfElse()
Avatar billede Bennysørensen Praktikant
14. juli 2003 - 03:22 #5
Glimrende svar...det er lige sådan noget, jeg har brug for :o)

Thanks
Avatar billede Bennysørensen Praktikant
14. juli 2003 - 03:24 #6
Hvad faen skete der dér...nu er jeg pludselig spørger, og har mulighed for at give mig selv point? Det er sgudda squasguy, der skal have dem...
Avatar billede Bennysørensen Praktikant
14. juli 2003 - 03:37 #7
Hm...og der er ikke noget, der kan compiles som "else if" i Forte.
Det kræver en condition af en slags, der jo ikke er der: Det skal bare være hvis det andet ikke fungerer. Jeg har lavet samme show med en switch, men mener at det bør kunne lade sig gøre med if-else.
Avatar billede Bennysørensen Praktikant
14. juli 2003 - 03:47 #8
...og det kan det. Men
else if ((isEt==false) && (isTo==false) && (isTre==false)&& (isFire==false)) har så lært mig at jeg ikke skal bruge if else til sådan noget her :o)

Godt, jeg vil gerne give SquashGuy 15 point...men jeg har ikke lov?
Avatar billede squashguy Nybegynder
14. juli 2003 - 04:05 #9
vil den ikke compile dette?

public void Lokker()
    {
        if (isEt)
          System.out.println("Tallet er 1");
        else if (isTo)
            System.out.println("Tallet er 2");
        else if (isTre)
            System.out.println("Tallet er 3");
        else if (isFire)
            System.out.println("Tallet er 4");
        else
            System.out.println("Programmet er itu");
    }
Avatar billede squashguy Nybegynder
14. juli 2003 - 04:05 #10
jeg skal lige lægge et svar, før du kan give point ;-)
Avatar billede Bennysørensen Praktikant
14. juli 2003 - 04:35 #11
Æh jo, det var mig, der havde sat det forkert op...jeg troede at det sidste If skulle placeres nede i bunden, så der altså stod if, if, it, if og else if. Nu kan jeg godt se at dét ikke var helt korrekt.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester