Avatar billede tonika Nybegynder
11. november 2007 - 21:24 Der er 7 kommentarer og
1 løsning

hjælp til if statements

Hej,

I forbindelse med at vi skal lave en simple TUI, har jeg viklet mig ind i et hav af if-sætninger.
Et af punkterne, skulle gerne kun kunne modtage nogle specifikke Strings. Det fungerer egentlig meget godt, dog udskriver den kun, at indtastet er ugyldigt når man taster 'forkert' i den første if sætning, og den anden er programmet åbenbart fuldstændig ligeglad med. Jeg kan godt se, at det højst sandsynligt er mine braces der er sat forkert, men har vist brug for lidt hjælp nu!


if (choice == 3)
{   
System.out.println("Indtast fagets navn: (dat, eoe, sam eller org)" );
choiceThree = scan.next();
                   
if(choiceThree.equalsIgnoreCase("dat")|| choiceThree.equalsIgnoreCase("eoe") ||
choiceThree.equalsIgnoreCase("sam") || choiceThree.equalsIgnoreCase("org"))
{
                                                 
System.out.println("Indtast betegnelse for opgaven (eks. U1, G1 osv.): ");
choiceFive = scan.next();
                                                                                   
if(choiceFive.equalsIgnoreCase("u1")|| choiceFive.equalsIgnoreCase("u2") ||choiceFive.equalsIgnoreCase("u3")||
choiceFive.equalsIgnoreCase("u4")|| choiceFive.equalsIgnoreCase("u5") || choiceFive.equalsIgnoreCase("u6")
|| choiceFive.equalsIgnoreCase("u6") || choiceFive.equalsIgnoreCase("u7") || choiceFive.equalsIgnoreCase("u8")||
choiceFive.equalsIgnoreCase("g1") || choiceFive.equalsIgnoreCase("g2"))

System.out.println(max.printAssignmentStudStatus(choiceThree, choiceFive));     
}               
else                       
System.out.print("\nUgyldigt indtast\n");
Avatar billede _carsten Nybegynder
11. november 2007 - 21:30 #1
Du mangler én

if (choice == 3){   
    System.out.println("Indtast fagets navn: (dat, eoe, sam eller org)" );
    choiceThree = scan.next();
                   
    if(choiceThree.equalsIgnoreCase("dat")|| choiceThree.equalsIgnoreCase("eoe") ||
        choiceThree.equalsIgnoreCase("sam") || choiceThree.equalsIgnoreCase("org")){

        System.out.println("Indtast betegnelse for opgaven (eks. U1, G1 osv.): ");
        choiceFive = scan.next();

        if(choiceFive.equalsIgnoreCase("u1")|| choiceFive.equalsIgnoreCase("u2") ||choiceFive.equalsIgnoreCase("u3")||
        choiceFive.equalsIgnoreCase("u4")|| choiceFive.equalsIgnoreCase("u5") || choiceFive.equalsIgnoreCase("u6")
        || choiceFive.equalsIgnoreCase("u6") || choiceFive.equalsIgnoreCase("u7") || choiceFive.equalsIgnoreCase("u8")||
        choiceFive.equalsIgnoreCase("g1") || choiceFive.equalsIgnoreCase("g2"))

        System.out.println(max.printAssignmentStudStatus(choiceThree, choiceFive));     
    }
}               
else                       
System.out.print("\nUgyldigt indtast\n");
Avatar billede _carsten Nybegynder
11. november 2007 - 21:31 #2
for din egen og overskuelighedens skyld, så sæt start brace for enden af linien og lav indrykning og slut brace under i'et i if
Avatar billede tonika Nybegynder
11. november 2007 - 21:40 #3
Hej,

Ja, jeg kan godt se jeg ikke fik den sidste afsluttende brace med da jeg kopierede koden ind her. Men det var nu ikke lige det der var problemet. Problemet er at den kun udfører else sætningen hvis den først if ikke udføres, ikke når nummer to ikke udføres?
Håber du forsår hvad jeg mener.
Desuden, er vi blevet 'opfordret' til at kode på denne måde med paranteserne hvor jeg satte dem. Så det må jeg jo nok holde mig til...
Avatar billede _carsten Nybegynder
11. november 2007 - 21:51 #4
Jeg tillader mig at tro du misset noget i 'opfordringen' som du selv kan se er det umuligt at overskue selv 10 linier kode, nå nok om det.

Det er i forkortet form som du gør det (pseudo kode)

if (choice == 3){
    if(choiceThree.............){
        if(choiceFive.equalsIg...............){
        }
    }
}
else

Den når altså kun ind i 2 og 3 if hvis første er en succes
Avatar billede _carsten Nybegynder
11. november 2007 - 21:53 #5
Det er måske nemmere at se her

if (choice == 3){   
    System.out.println("Indtast fagets navn: (dat, eoe, sam eller org)" );
    choiceThree = scan.next();
                   
    if(choiceThree.equalsIgnoreCase("dat")|| choiceThree.equalsIgnoreCase("eoe") ||
        choiceThree.equalsIgnoreCase("sam") || choiceThree.equalsIgnoreCase("org")){

        System.out.println("Indtast betegnelse for opgaven (eks. U1, G1 osv.): ");
        choiceFive = scan.next();

        if(choiceFive.equalsIgnoreCase("u1")|| choiceFive.equalsIgnoreCase("u2") ||choiceFive.equalsIgnoreCase("u3")||
            choiceFive.equalsIgnoreCase("u4")|| choiceFive.equalsIgnoreCase("u5") || choiceFive.equalsIgnoreCase("u6")
            || choiceFive.equalsIgnoreCase("u6") || choiceFive.equalsIgnoreCase("u7") || choiceFive.equalsIgnoreCase("u8")||
            choiceFive.equalsIgnoreCase("g1") || choiceFive.equalsIgnoreCase("g2"))

            System.out.println(max.printAssignmentStudStatus(choiceThree, choiceFive));     
    }
}               
else
Avatar billede _carsten Nybegynder
11. november 2007 - 21:57 #6
Tro du arbejder frem mod dette

if (choice == 3){   
    System.out.println("Indtast fagets navn: (dat, eoe, sam eller org)" );
    choiceThree = scan.next();
                   
    if(choiceThree.equalsIgnoreCase("dat")|| choiceThree.equalsIgnoreCase("eoe") ||
        choiceThree.equalsIgnoreCase("sam") || choiceThree.equalsIgnoreCase("org")){

        System.out.println("Indtast betegnelse for opgaven (eks. U1, G1 osv.): ");
        choiceFive = scan.next();

        if(choiceFive.equalsIgnoreCase("u1")|| choiceFive.equalsIgnoreCase("u2") ||choiceFive.equalsIgnoreCase("u3")||
            choiceFive.equalsIgnoreCase("u4")|| choiceFive.equalsIgnoreCase("u5") || choiceFive.equalsIgnoreCase("u6")
            || choiceFive.equalsIgnoreCase("u6") || choiceFive.equalsIgnoreCase("u7") ||
            choiceFive.equalsIgnoreCase("u8")|| choiceFive.equalsIgnoreCase("g1")
            || choiceFive.equalsIgnoreCase("g2")) {

            System.out.println(max.printAssignmentStudStatus(choiceThree, choiceFive));
        }
        else
            // HVAD HVIS DET IKKE ER u1, u2, u3, u4 etc
    }
    else
        // HVAD DET IKKE ER dat, eoe, sam eller org
}               
else
Avatar billede tonika Nybegynder
11. november 2007 - 22:07 #7
Det hjalp, at få det forklaret som du gjorde det.
Nu forstår jeg hvad det er der er gået galt.
Tusind tak for hjælpen!!!!!
Avatar billede _carsten Nybegynder
11. november 2007 - 22:08 #8
Glæder mig at det lykkedes :)
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