Avatar billede chalde Seniormester
12. november 2007 - 15:51 Der er 3 kommentarer og
1 løsning

Vil ikke ændre string

Hejsa!
Sidder med en metode som jeg ikke helt forstår hvorfor den modarbejder mig.

    public String toString(){
        String status = "", status0 = "";
        status += "***********************\n";
        status += "Opgavestatus for:\n";
        status += "Navn: " + studName + "\n";
        status += "CPR: " + CPR + "\n\n";
       
        for(int i = 0;i<assignments.size();i++){
            status += "Opgave: " + assignments.get(i).getCourse() + "-" + assignments.get(i).getName() +"\n";
           
                System.out.println("Opgavestatus forkort " + assignments.get(i).getStatus()); // Blot til test. Printer status for opgave ud
                           
                // Fanger status x/i/g og saetter status0 til det respektive
                if (assignments.get(i).getStatus() == "x"){
                    status0 = "Opgave ikke afleveret.";
                }
                else if (assignments.get(i).getStatus() == "i"){
                    status0 = "Opgave ikke godkendt.";
                }
                else if (assignments.get(i).getStatus() == "g"){
                    status0 = "Opgave godkendt.";
                }
           
            status += "Status: " + status0 + "\n\n"; // Hvorfor er det kun den gamle status der bliver udprintet???
        }
        status += "***********************";
    return status;
    }

Køres denne metode 1. gang udskrives det korrekte. F.eks den fanger et "i", og status0 ændres til "Opgave ikke godkendt."
Herefter ændres status til f.eks "x" gennem en anden metode. Denne metode køres, System.out.println("Opgavestatus forkort " + assignments.get(i).getStatus()); skriver også det korrekte ud (i dette tilfælde "x"), men status0 forbliver "Opgave ikke godkendt.".

Eks. på udprint:
- Før ændring:
Opgavestatus forkort g

Opgave: Sam-U4
Status: Opgave godkendt.

- Efter ændring af status til x
Opgavestatus forkort x <--------- dette er korrekt ændret, og nu bør if sætningen fange den, men dette sker bare ikke, og det efterfølgende resultat bliver derfor:
Opgave: Sam-U4
Status: Opgave godkendt.

Hvor der burde stå:
Opgave: Sam-U4
Status: Opgave ikke afleveret.

Nogen der kan greje dette? hvad har jeg glemt?
Avatar billede arne_v Ekspert
12. november 2007 - 16:16 #1
Jeg kan ikke helt gennemskue din kode, men et gæt vil være at du skal bruge .equals og ikke == til sammenligning.
Avatar billede arne_v Ekspert
12. november 2007 - 16:17 #2
== på Strings tester om de ligger på samme adresse i memory

.equals på Strings tester om de indeholder de samme bogstaver
Avatar billede chalde Seniormester
12. november 2007 - 16:25 #3
Super, det virker :) Tænkte nok det var mig der havde kogt over og lavet en fejl :)
Tusind tak for hjælpen Arne. Endnu engang er du min redning :) Smid et svar.
Avatar billede arne_v Ekspert
12. november 2007 - 16:30 #4
svar
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