5 svar
272 visningar
viie 7 – Fd. Medlem
Postad: 5 aug 2021 01:53 Redigerad: 5 aug 2021 01:57

Console.WriteLine upprepar sig för alltid

Här är min kod:

case 3: // Här ska användaren kunna söka bland siffrorna med en binärsökning.
                        Console.Clear();
                        if (sifferLista.Count > 0)
                        {
                            if (intSortering)
                            {
                                Console.WriteLine("\n\tVilken siffra vill du söka på?");
                                Int32.TryParse(Console.ReadLine(), out int key); // Tar emot användarens sökning
                                if (key < 0) key = 0; // Ser till att sökningen är på ett positivt tal

                                int första = 0;
                                int sista = sifferLista.Count - 1;

                                while (första <= sista)
                                {
                                    int mellan = (första + sista) / 2;

                                    if (key > sifferLista[mellan])
                                        första = mellan + 1;
                                    else if (key < sifferLista[mellan])
                                        sista = mellan - 1;
                                    else
                                        Console.WriteLine("\n\tSiffran du sökt på finns på element {0} i sifferlistan.", mellan);
                                }

                                if (första > sista)
                                    Console.WriteLine("\n\tSökningen lyckades inte");

                                SifferUtskrift(sifferLista); // Skriver ut hela listan med metoden.
                            }
                            else
                            {
                                Console.WriteLine("\n\tSiffrorna i din lista behöver sorteras. Kör en sortering innan sökningen."); // Användaren behöver göra en sortering.
                            }
                        }
                        else
                        {
                            Console.WriteLine("\n\tDet saknas inlägg i sifferlistan. Generera lite siffror först."); // Användaren har inte genererat något värde till listan.
                        }
                        MenyAvslut(); // Kallar på den standardiserade menyavslutning metoden.
                        break;

 

Osäkert om resterande koden är viktigt att se men jag visar alla kod som finns i caset för lite kontext.

På rad nr. 23 så får jag i i konsol-fönstret att texten upprepar sig om och om och om igen för evighet. Jag har testat att skrivit in Console.ReadLine under den raden och problemet blev löst men då skulle användaren behöver trycka en ytterligare "Enter" för att få fram texten och den vägen vill jag inte ta hellre. 

Vad kan jag göra för att det ska endast visas en rad med text?

Laguna 30376
Postad: 5 aug 2021 07:46

Förmodligen har 'första' blivit lika med 'sista' och då fortsätter loopen. Du kan skriva in ett "break" efter utskriften så går du ur loopen. Det kan vara rätt att ha (första < sista) som test, men jag har inte tänkt ut om det kan bli fel.

viie 7 – Fd. Medlem
Postad: 5 aug 2021 08:11 Redigerad: 5 aug 2021 08:13
Laguna skrev:

Förmodligen har 'första' blivit lika med 'sista' och då fortsätter loopen. Du kan skriva in ett "break" efter utskriften så går du ur loopen. Det kan vara rätt att ha (första < sista) som test, men jag har inte tänkt ut om det kan bli fel.

(första < sista) kunde inte söka fram något resultat. "break" testade jag med istället och då fungerade det utmärkt!

Men sen så har jag ett litet problem till, nästan samma kod med en binärsökning dock bland bokstäverna istället går det nämligen inte att använda break; på samma sätt och får samma resultat. Lägger jag in break; i slutet av while-loopen där så visar det inte resultat-texten alls..

Koden på det ser ut såhär:

https://pastebin.com/SN9CkyC5

Utan break;:

Med break;:

Något tips på vad jag skulle kunna testa med? Och tack ska du ha! ^^

Laguna 30376
Postad: 5 aug 2021 08:50

Tänkte du på att ha klamrar runt utskriften och break? break ska bara göras i det sista fallet i testningen.

Lägger man bara till det rakt av så utförs det redan första gången man har kört igenom loopen.

(Jag tror pluggakuten vill att man har allt material här och inte länkar till andra servrar, för att det senare kan försvinna, antar jag.)

beerger 962
Postad: 5 aug 2021 11:40 Redigerad: 5 aug 2021 11:41
viie skrev:

Här är min kod:

case 3: // Här ska användaren kunna söka bland siffrorna med en binärsökning.
                        Console.Clear();
                        if (sifferLista.Count > 0)
                        {
                            if (intSortering)
                            {
                                Console.WriteLine("\n\tVilken siffra vill du söka på?");
                                Int32.TryParse(Console.ReadLine(), out int key); // Tar emot användarens sökning
                                if (key < 0) key = 0; // Ser till att sökningen är på ett positivt tal

                                int första = 0;
                                int sista = sifferLista.Count - 1;

                                while (första <= sista)
                                {
                                    int mellan = (första + sista) / 2;

                                    if (key > sifferLista[mellan])
                                        första = mellan + 1;
                                    else if (key < sifferLista[mellan])
                                        sista = mellan - 1;
                                    else
                                        Console.WriteLine("\n\tSiffran du sökt på finns 
                                        på element {0} i sifferlistan.", mellan);
                                        break;
                                }

                                if (första > sista)
                                    Console.WriteLine("\n\tSökningen lyckades inte");

                                SifferUtskrift(sifferLista); // Skriver ut hela listan med metoden.
                            }
                            else
                            {
                                Console.WriteLine("\n\tSiffrorna i din lista behöver sorteras. Kör en sortering innan sökningen."); // Användaren behöver göra en sortering.
                            }
                        }
                        else
                        {
                            Console.WriteLine("\n\tDet saknas inlägg i sifferlistan. Generera lite siffror först."); // Användaren har inte genererat något värde till listan.
                        }
                        MenyAvslut(); // Kallar på den standardiserade menyavslutning metoden.
                        break;

 

Osäkert om resterande koden är viktigt att se men jag visar alla kod som finns i caset för lite kontext.

På rad nr. 23 så får jag i i konsol-fönstret att texten upprepar sig om och om och om igen för evighet. Jag har testat att skrivit in Console.ReadLine under den raden och problemet blev löst men då skulle användaren behöver trycka en ytterligare "Enter" för att få fram texten och den vägen vill jag inte ta hellre. 

Vad kan jag göra för att det ska endast visas en rad med text?

Inte läst igenom koden så noga, men funkar inte det här? La in break i koden ovan.

Laguna 30376
Postad: 5 aug 2021 17:46

Beerger, läste du min kommentar? Du har gjort precis det fel som jag beskrev.

Svara
Close