Tarkastele ratkaisua, joka tehdään verrattuna haasteen toimintaan

Valmis

Seuraavissa esimerkeissä käytetään -muotoa do , koska tiedät, että sinun on suoritettava koodilohko vähintään kerran. Voit myös käyttää -funktiota while saman tuloksen saavuttamiseen. Joidenkin kehittäjien mielestä -sovelluksen logiikka tekee koodista while helpommin luettavan. Jos se on sinulle näin, voit halutessasi ottaa käyttöön whilekohteen . Ota tässä tapauksessa huomioon, että useimmat koodinkääntäjät optimoivat koodisi puolestasi muuntamalla iterointilausekkeen do-while-muotoon.

Projektin 1 koodi

Seuraava koodi on yksi mahdollinen ratkaisu edellisen yksikön haasteeseen projekti 1.

Koodi käyttää -lauseketta, do koska koodilohko on suoritettava vähintään kerran. Voit myös käyttää -funktiota while saman tuloksen saavuttamiseen. Joidenkin kehittäjien mielestä -sovelluksen logiikka tekee koodista while helpommin luettavan. Jos näin on, voit halutessasi ottaa lausekkeen while käyttöön tässä.

string? readResult;
string valueEntered = "";
int numValue = 0;
bool validNumber = false;

Console.WriteLine("Enter an integer value between 5 and 10");

do
{
    readResult = Console.ReadLine();
    if (readResult != null) 
    {
        valueEntered = readResult;
    }

    validNumber = int.TryParse(valueEntered, out numValue);

    if (validNumber == true)
    {
        if (numValue <= 5 || numValue >= 10)
        {
            validNumber = false;
            Console.WriteLine($"You entered {numValue}. Please enter a number between 5 and 10.");
        }
    }
    else 
    {
        Console.WriteLine("Sorry, you entered an invalid number, please try again");
    }
} while (validNumber == false);

Console.WriteLine($"Your input value ({numValue}) has been accepted.");

readResult = Console.ReadLine();

Projektin 2 koodi

Seuraava koodi on yksi mahdollinen ratkaisu edellisen yksikön haasteeseen 2.

Koodi käyttää -lauseketta, do koska koodilohko on suoritettava vähintään kerran. Voit myös käyttää -funktiota while saman tuloksen saavuttamiseen. Joidenkin kehittäjien mielestä -sovelluksen logiikka tekee koodista while helpommin luettavan. Jos näin on, voit halutessasi ottaa lausekkeen while käyttöön tässä.

string? readResult;
string roleName = "";
bool validEntry = false;

do
{                
    Console.WriteLine("Enter your role name (Administrator, Manager, or User)");
    readResult = Console.ReadLine();
    if (readResult != null) 
    {
        roleName = readResult.Trim();
    }

    if (roleName.ToLower() == "administrator" || roleName.ToLower() == "manager" || roleName.ToLower() == "user") 
    {
        validEntry = true;
    }
    else
    {
        Console.Write($"The role name that you entered, \"{roleName}\" is not valid. ");
    }

} while (validEntry == false);

Console.WriteLine($"Your input value ({roleName}) has been accepted.");
readResult = Console.ReadLine();

Project 3 -koodi

Seuraava koodi on yksi mahdollinen ratkaisu edellisen yksikön haasteeseen 3.

Koodi käyttää for lauseketta ulkosilmukalle, koska "foreach iteration-muuttujalle" määritettyä arvoa ei voi muokata. Voit kiertää ongelman ilmoittamalla ylimääräisen merkkijonomuuttujan silmukan foreach sisällä, mutta lisäät sitten koodilogiikkaan ei-toivottua monimutkaisuutta. Toisin sanoen, käyttämällä iterointilauseketta foreach (string myString in myStrings) ja yrittämällä myString käsitellä muuttujaa luodaan käännösvirhe.

Koodi käyttää sisemmän silmukan while lauseketta, koska tietomerkkijonon arvosta riippuen koodilohkoa ei ehkä suoriteta (kun merkkijono ei sisällä pistettä). Lauseketta do ei kannata käyttää tilanteissa, joissa iterointilohkoa ei ehkä tarvitse suorittaa.

string[] myStrings = new string[2] { "I like pizza. I like roast chicken. I like salad", "I like all three of the menu choices" };
int stringsCount = myStrings.Length;

string myString = "";
int periodLocation = 0;

for (int i = 0; i < stringsCount; i++)
{
    myString = myStrings[i];
    periodLocation = myString.IndexOf(".");

    string mySentence;

    // extract sentences from each string and display them one at a time
    while (periodLocation != -1)
    {

        // first sentence is the string value to the left of the period location
        mySentence = myString.Remove(periodLocation);

        // the remainder of myString is the string value to the right of the location
        myString = myString.Substring(periodLocation + 1);

        // remove any leading white-space from myString
        myString = myString.TrimStart();

        // update the comma location and increment the counter
        periodLocation = myString.IndexOf(".");

        Console.WriteLine(mySentence);
    }
 
    mySentence = myString.Trim();
    Console.WriteLine(mySentence);
}

Jos olet onnistunut, onnittelut! Jos sinulla oli ongelmia, tarkastele ratkaisua ja yritä ymmärtää, miten se toimii.