Avatar billede catu Nybegynder
24. april 2014 - 17:32 Der er 7 kommentarer og
1 løsning

For loop returnerer altid 0

Jeg er sikkert en idiot. Jeg har ikke programmeret i C# i laaaang tid, og kan simpelthen ikke gennemskue hvorfor dette fejler. Problemet er, at der altid returneres 0

int TrackEqualTo()
        {
            int playerindex =0;
            AVAsset currentPlayerAsset = appDelegate.avPlayer.CurrentItem.Asset;
            AVUrlAsset urlAsset = (AVUrlAsset)currentPlayerAsset;
            string url1 = urlAsset.Url.ToString ();


            for (int index = 0; index < playeritems.Count; index++) {
                AVAsset asset1 = playeritems[index].Asset;
                AVUrlAsset asset2 = (AVUrlAsset)asset1;
                string url2 = asset2.Url.ToString ();
                Console.WriteLine ("current url: " + url1);
                Console.WriteLine ("plitems url: " +url2);
                if (url1.Equals (url2, StringComparison.Ordinal)) {
                    playerindex = index;
                    Console.WriteLine ("index: " + index);
                    Console.WriteLine ("playerindex: " + playerindex);
                } else {
                    Console.WriteLine ("else index: " + playerindex);
                    return -1;
                }
            }

            return playerindex;

        }
Avatar billede conz Juniormester
24. april 2014 - 17:46 #1
Et umiddelbart bud er at din playeritems.Count er 1, og at den derfor kun løber løkken igennem den ene gang, og ikke når at inkrementere index?

Hvad printer disse to linjer og hvor mange gange?
                    Console.WriteLine ("index: " + index);
                    Console.WriteLine ("playerindex: " + playerindex);
Avatar billede catu Nybegynder
24. april 2014 - 17:53 #2
Playeritems.count er 10

De printer index 0

Den rammer kun if den 1 gang, og derefter rammer den Else hver gang
Avatar billede catu Nybegynder
24. april 2014 - 17:56 #3
Første gang jeg kører metoden er skal index også være 0
Anden gang er if sætningen forkert ved index 0, men skal være rigtig ved index 1. Den kommer bare ikke dertil og returnerer bare 0
Avatar billede claes57 Ekspert
24. april 2014 - 19:09 #4
linjen
return -1;
hopper den ikke ud af løkken - det skal den ikke - drop linjen.
Avatar billede catu Nybegynder
24. april 2014 - 19:59 #5
Doh - og så var det løst. Mange tak - giver du et svar så du kan få point?
Avatar billede claes57 Ekspert
24. april 2014 - 20:10 #6
bare luk selv - jeg ved intet om C#
Avatar billede kalp Novice
29. april 2014 - 14:49 #7
Om end det ser sjovt ud at der står return -1; så kunne det sagtens være det var meningen:)
Derfor tror jeg ikke der er mange der ville nævne den linje når der i spørgsmålet står:

"..Problemet er, at der altid returneres 0"

for så bliver det -1 tydeligvis behandlet et eller andet sted siden det kan blive 0:D
Avatar billede catu Nybegynder
22. august 2014 - 07:28 #8
lukker
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

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