演習 - 新しい OurAnimals 配列データを読み取って保存するコードを記述する

完了

この演習では、各ペット特性のデータ 入力検証ループを開発し、新しい ourAnimals 配列データを格納します。 この演習で完了する詳細なタスクは次のとおりです。

  1. 種の読み取りと検証: ループと、ペットの種の入力と検証に使用される内部コード構造を構築します。
  2. ペット ID の構築: petCount と種名を使用して petID 値を構築するコードを記述します。
  3. 年齢の読み取りと検証: ループと、ペットの年齢を入力して検証するために使用される内部コード構造を構築します。
  4. 物理的な説明の読み取りと検証: ペットの物理的な説明を入力するために使用されるループと内部コード構造を構築します。
  5. パーソナリティの説明を読んで検証する: ループと、ペットの性格の説明を入力するために使用される内部コード構造を構築します。
  6. ニックネームの読み取りと検証: ループと、ペットのニックネームを入力するために使用される内部コード構造を構築します。
  7. 検証テスト: この演習で開発したコードの検証テストを行います。

重要

この演習を開始する前に、このモジュールの前の演習を完了する必要があります。

ペットの種を読んで検証するためのループを構築する

このタスクでは、ユーザーがdoまたはのいずれかの有効な種名を入力するまで反復処理する ループを作成します。 無効な文字列 readResult を再利用して、 Console.ReadLine() 入力をキャプチャします。 また、サンプル データの生成時に使用した animalSpecies 文字列変数も再利用します。 validEntryという名前の新しいブール変数をアプリに追加します。 validEntry ループの終了条件として評価される式では、doを使用します。

  1. Visual Studio Code が開き、Program.cs ファイルがエディターに表示されていることを確認します。

  2. while (anotherPet == "y" && petCount < maxPets)ステートメントを見つけて、先頭のコード ブロックに空白のコード行を追加します。

  3. 作成した空白のコード行において、validEntry を初期値 false で宣言するには、次のコードを入力してください。

    bool validEntry = false;
    
    
  4. validEntryの宣言の下の行で、種データ入力のdo ループを作成するには、次のコードを入力します。

    // get species (cat or dog) - string animalSpecies is a required field 
    do
    {
    } while (validEntry == false);
    
    
  5. do ステートメントのコード ブロック内で、表示プロンプトを作成し、ユーザー入力を読み取るために、次のコードを入力します。

    Console.WriteLine("\n\rEnter 'dog' or 'cat' to begin a new entry");
    readResult = Console.ReadLine();
    
    
  6. readResultの値をreadResultに割り当てる前に、animalSpeciesの値が null でないことを確認するには、次のコードを入力します。

    if (readResult != null)
    {
        animalSpecies = readResult.ToLower();
    
    }
    
  7. animalSpecies値の割り当ての下の行で、animalSpeciesに有効な種名が含まれていることを確認するには、次のコードを入力します。

    if (animalSpecies != "dog" && animalSpecies != "cat")
    {
        validEntry = false;
    }
    else
    {
        validEntry = true;
    }
    
  8. 完成した種名データ入力ループを次のコードと比較します。

    // get species (cat or dog) - string animalSpecies is a required field 
    do
    {
        Console.WriteLine("\n\rEnter 'dog' or 'cat' to begin a new entry");
        readResult = Console.ReadLine();
        if (readResult != null)
        {
            animalSpecies = readResult.ToLower();
            if (animalSpecies != "dog" && animalSpecies != "cat")
            {
                //Console.WriteLine($"You entered: {animalSpecies}.");
                validEntry = false;
            }
            else
            {
                validEntry = true;
            }
        }
    } while (validEntry == false);
    
  9. Visual Studio Code の [ファイル] メニューで、[保存] を選択します。

  10. Visual Studio Code で [統合ターミナル] パネルを開き、コマンドを入力してプログラムをビルドします。

    ビルド エラーまたは警告が報告された場合は、続行する前に問題を修正してください。

動物 ID 値を構築する

このタスクでは、 animalSpecies 変数と petCount 変数を使用して、 animalIDに割り当てる値を作成します。

  1. 種名データ入力ループのコード ブロックの下に空白のコード行を追加します。

  2. animalID値を作成して割り当てるには、次のコードを入力します。

    // build the animal the ID number - for example C1, C2, D3 (for Cat 1, Cat 2, Dog 3)
    animalID = animalSpecies.Substring(0, 1) + (petCount + 1).ToString();
    
    
  3. Visual Studio Code の [ファイル] メニューで、[保存] を選択します。

ペットの年齢を読み取って検証するためのループを構築する

このタスクでは、ユーザーがdoまたは年単位のペットの年齢を表す有効な整数を入力するまで反復処理する? ループを作成します。 無効な文字列 readResult を再利用して、 Console.ReadLine() 入力をキャプチャします。 また、サンプル データの生成時に使用した animalAge 文字列変数も再利用します。 animalAge文字列が有効な整数を表しているかどうかをテストするには、validEntryブール値を使用します。 petAgeという名前の新しい整数変数を宣言して、数値を格納します。 ここでも、validEntry ループの終了条件として評価される式で、do Boolean が使用されます。

  1. animalID変数に値を割り当てるために使用する行の下に空白のコード行を追加します。

  2. 年齢データ エントリの do ループを作成するには、次のコードを入力します。

    // get the pet's age. can be ? at initial entry. 
    do
    {
    } while (validEntry == false);
    
    
  3. do ステートメントのコード ブロック内で、petAgeという名前の整数変数を宣言するには、次のコードを入力します。

    int petAge;
    
    
  4. petAgeの宣言の下の行で、メッセージ プロンプトを表示し、ユーザー入力を読み取るために、次のコードを入力します。

    Console.WriteLine("Enter the pet's age or enter ? if unknown");
    readResult = Console.ReadLine();
    
    
  5. readResultの値をreadResultに割り当てる前に、animalAgeの値が null でないことを確認するには、次のコードを入力します。

    if (readResult != null)
    {
        animalAge = readResult;
    
    }
    
  6. animalAge値の割り当ての下の行で、有効な整数をテストする前にユーザーが?入力したかどうかを確認するには、次のコードを入力します。

    if (animalAge != "?")
    {
        validEntry = int.TryParse(animalAge, out petAge);
    }
    else
    {
        validEntry = true;
    }
    
  7. 完了した年齢データ 入力ループを次のコードと比較します。

    // get the pet's age. can be ? at initial entry.
    do
    {
        int petAge;
        Console.WriteLine("Enter the pet's age or enter ? if unknown");
        readResult = Console.ReadLine();
        if (readResult != null)
        {
            animalAge = readResult;
            if (animalAge != "?")
            {
                validEntry = int.TryParse(animalAge, out petAge);
            }
            else
            {
                validEntry = true;
            }
        }
    } while (validEntry == false);
    
  8. Visual Studio Code の [ファイル] メニューで、[保存] を選択します。

  9. Visual Studio Code で [統合ターミナル] パネルを開き、コマンドを入力してプログラムをビルドします。

    ビルド エラーまたは警告が報告された場合は、続行する前に問題を修正してください。

ペットの身体的特徴を読み取って検証するためのループを作成する

このタスクでは、ユーザーがペットの物理的な説明を表す文字列値を入力するまで反復処理する do ループを作成します。 無効な文字列 readResult を再利用して、 Console.ReadLine() 入力をキャプチャします。 また、サンプル データの生成時に使用した animalPhysicalDescription 文字列変数も再利用します。 あなたはanimalPhysicalDescriptionに割り当てられた値を、do ループの終了条件として評価される式の中で使用します。

  1. 年齢データ 入力ループのコード ブロックの下に空白のコード行を追加します。

  2. 物理記述データ入力の do ループを作成するには、次のコードを入力します。

    // get a description of the pet's physical appearance/condition - animalPhysicalDescription can be blank.
    do
    {
    } while (animalPhysicalDescription == "");
    
    
  3. do ステートメントのコード ブロック内で、表示プロンプトを作成し、ユーザー入力を読み取るために、次のコードを入力します。

    Console.WriteLine("Enter a physical description of the pet (size, color, gender, weight, housebroken)");
    readResult = Console.ReadLine();
    
    
  4. readResultの値をreadResultに割り当てる前に、animalPhysicalDescriptionの値が null でないことを確認するには、次のコードを入力します。

    if (readResult != null)
    {
        animalPhysicalDescription = readResult.ToLower();
    
    }
    
  5. 入力した値が"tbd"されたときにanimalPhysicalDescriptionの値を""に割り当てるには、次のコードを入力します。

    if (animalPhysicalDescription == "")
    {
        animalPhysicalDescription = "tbd";
    }
    
  6. 完了した物理記述データ入力ループを次のコードと比較します。

    // get a description of the pet's physical appearance/condition - animalPhysicalDescription can be blank.
    do
    {
        Console.WriteLine("Enter a physical description of the pet (size, color, gender, weight, housebroken)");
        readResult = Console.ReadLine();
        if (readResult != null)
        {
            animalPhysicalDescription = readResult.ToLower();
            if (animalPhysicalDescription == "")
            {
                animalPhysicalDescription = "tbd";
            }
        }
    } while (animalPhysicalDescription == "");
    
  7. Visual Studio Code の [ファイル] メニューで、[保存] を選択します。

  8. Visual Studio Code で [統合ターミナル] パネルを開き、コマンドを入力してプログラムをビルドします。

    ビルド エラーまたは警告が報告された場合は、続行する前に問題を修正してください。

ペットの性格の説明を読んで検証するためのループを構築する

このタスクでは、ユーザーがペットの性格の説明を表す文字列値を入力するまで反復処理する do ループを作成します。 無効な文字列 readResult を再利用して、 Console.ReadLine() 入力をキャプチャします。 また、サンプル データの生成時に使用した animalPersonalityDescription 文字列変数も再利用します。 あなたはanimalPersonalityDescriptionに割り当てられた値を、do ループの終了条件として評価される式の中で使用します。

  1. 物理記述データ入力ループのコード ブロックの下に空白のコード行を追加します。

  2. パーソナリティ記述データ入力の do ループを作成するには、次のコードを入力します。

    // get a description of the pet's personality - animalPersonalityDescription can be blank.
    do
    {
    } while (animalPersonalityDescription == "");
    
    
  3. do ステートメントのコード ブロック内で、表示プロンプトを作成し、ユーザー入力を読み取るために、次のコードを入力します。

    Console.WriteLine("Enter a description of the pet's personality (likes or dislikes, tricks, energy level)");
    readResult = Console.ReadLine();
    
    
  4. readResultの値をreadResultに割り当てる前に、animalPersonalityDescriptionの値が null でないことを確認するには、次のコードを入力します。

    if (readResult != null)
    {
        animalPersonalityDescription = readResult.ToLower();
    
    }
    
  5. 入力した値が"tbd"されたときにanimalPersonalityDescriptionの値を""に割り当てるには、次のコードを入力します。

    if (animalPersonalityDescription == "")
    {
        animalPersonalityDescription = "tbd";
    }
    
  6. 完成したパーソナリティ記述データ入力ループを次のコードと比較します。

    // get a description of the pet's personality - animalPersonalityDescription can be blank.
    do
    {
        Console.WriteLine("Enter a description of the pet's personality (likes or dislikes, tricks, energy level)");
        readResult = Console.ReadLine();
        if (readResult != null)
        {
            animalPersonalityDescription = readResult.ToLower();
            if (animalPersonalityDescription == "")
            {
                animalPersonalityDescription = "tbd";
            }
        }
    } while (animalPersonalityDescription == "");
    
  7. Visual Studio Code の [ファイル] メニューで、[保存] を選択します。

  8. Visual Studio Code で [統合ターミナル] パネルを開き、コマンドを入力してプログラムをビルドします。

    ビルド エラーまたは警告が報告された場合は、続行する前に問題を修正してください。

ペットのニックネームを読み取って検証するためのビルド ループ

このタスクでは、ユーザーがペットのニックネームを表す文字列値を入力するまで反復処理する do ループを作成します。 無効な文字列 readResult を再利用して、 Console.ReadLine() 入力をキャプチャします。 また、サンプル データの生成時に使用した animalNickname 文字列変数も再利用します。 あなたはanimalNicknameに割り当てられた値を、do ループの終了条件として評価される式の中で使用します。

  1. パーソナリティ記述データ入力ループのコード ブロックの下に空白のコード行を追加します。

  2. パーソナリティ記述データ入力の do ループを作成するには、次のコードを入力します。

    // get the pet's nickname. animalNickname can be blank.
    do
    {
    } while (animalNickname == "");
    
    
  3. do ステートメントのコード ブロック内で、表示プロンプトを作成し、ユーザー入力を読み取るために、次のコードを入力します。

    Console.WriteLine("Enter a nickname for the pet");
    readResult = Console.ReadLine();
    
    
  4. readResultの値をreadResultに割り当てる前に、animalNicknameの値が null でないことを確認するには、次のコードを入力します。

    if (readResult != null)
    {
        animalNickname = readResult.ToLower();
    
    }
    
  5. 入力した値が"tbd"されたときにanimalNicknameの値を""に割り当てるには、次のコードを入力します。

    if (animalNickname == "")
    {
        animalNickname = "tbd";
    }
    
  6. 完了したニックネーム データ入力ループを次のコードと比較します。

    // get the pet's nickname. animalNickname can be blank.
    do
    {
        Console.WriteLine("Enter a nickname for the pet");
        readResult = Console.ReadLine();
        if (readResult != null)
        {
            animalNickname = readResult.ToLower();
            if (animalNickname == "")
            {
                animalNickname = "tbd";
            }
        }
    } while (animalNickname == "");
    
  7. Visual Studio Code の [ファイル] メニューで、[保存] を選択します。

  8. Visual Studio Code で [統合ターミナル] パネルを開き、コマンドを入力してプログラムをビルドします。

    ビルド エラーまたは警告が報告された場合は、続行する前に問題を修正してください。

新しいペット情報を保存する

このタスクでは、ペットの特性に入力した値を ourAnimals 配列に保存します。

  1. ニックネーム データ入力ループのコード ブロックの下に空白のコード行を追加します。

  2. ユーザーが指定したデータ値を格納するには、次のコードを入力します。

    // store the pet information in the ourAnimals array (zero based)
    ourAnimals[petCount, 0] = "ID #: " + animalID;
    ourAnimals[petCount, 1] = "Species: " + animalSpecies;
    ourAnimals[petCount, 2] = "Age: " + animalAge;
    ourAnimals[petCount, 3] = "Nickname: " + animalNickname;
    ourAnimals[petCount, 4] = "Physical description: " + animalPhysicalDescription;
    ourAnimals[petCount, 5] = "Personality: " + animalPersonalityDescription;
    
  3. Visual Studio Code の [ファイル] メニューで、[保存] を選択します。

  4. Visual Studio Code で [統合ターミナル] パネルを開き、コマンドを入力してプログラムをビルドします。

    ビルド エラーまたは警告が報告された場合は、続行する前に問題を修正してください。

作業を確認する

このタスクでは、統合ターミナルからアプリケーションを実行し、ペットデータエントリが正しく動作していることを確認します。

  1. 必要に応じて、Visual Studio Code の統合ターミナル パネルを開きます。

  2. ターミナルのコマンド プロンプトで、「dotnet run」と入力します。

  3. ターミナルのコマンド プロンプトで、「2」と入力します。

  4. ターミナル パネルが更新され、次の出力が表示されていることを確認します。

    We currently have 4 pets that need homes. We can manage 4 more.
    
    Enter 'dog' or 'cat' to begin a new entry
    
  5. ターミナル コマンド プロンプトで次の値を入力し、後続の各プロンプトが表示されることを確認します。

    • Enter 'dog' or 'cat' to begin a new entryプロンプトで、「dog」と入力します
    • Enter the pet's age or enter ? if unknownプロンプトで、「?」と入力します
    • Enter a physical description of the pet (size, color, gender, weight, housebroken)プロンプトで、Enter キーを押します。
    • Enter a description of the pet's personality (likes or dislikes, tricks, energy level)プロンプトで、Enter キーを押します。
    • Enter a nickname for the petプロンプトで、Enter キーを押します。

    ターミナル パネルは次のように更新する必要があります。

    Enter 'dog' or 'cat' to begin a new entry
    dog
    Enter the pet's age or enter ? if unknown
    ?
    Enter a physical description of the pet (size, color, gender, weight, housebroken)
    
    Enter a description of the pet's personality (likes or dislikes, tricks, energy level)
    
    Enter a nickname for the pet
    
    Do you want to enter info for another pet (y/n)
    
  6. ターミナルのコマンド プロンプトで、「n」と入力します

  7. [ターミナル] パネルが更新され、メイン メニュー オプションが表示されていることを確認します。

  8. ターミナルのコマンド プロンプトで、「1」と入力します。

  9. ターミナル パネルが更新され、次の出力が表示されていることを確認します。

    ID #: d1
    Species: dog
    Age: 2
    Nickname: lola
    Physical description: medium sized cream colored female golden retriever weighing about 65 pounds. housebroken.
    Personality: loves to have her belly rubbed and likes to chase her tail. gives lots of kisses.
    
    ID #: d2
    Species: dog
    Age: 9
    Nickname: loki
    Physical description: large reddish-brown male golden retriever weighing about 85 pounds. housebroken.
    Personality: loves to have his ears rubbed when he greets you at the door, or at any time! loves to lean-in and give doggy hugs.
    
    ID #: c3
    Species: cat
    Age: 1
    Nickname: Puss
    Physical description: small white female weighing about 8 pounds. litter box trained.
    Personality: friendly
    
    ID #: c4
    Species: cat
    Age: ?
    Nickname:
    Physical description:
    Personality:
    
    ID #: d5
    Species: dog
    Age: ?
    Nickname: tbd
    Physical description: tbd
    Personality: tbd
    Press the Enter key to continue
    

    新しく追加したペット情報が表示されない場合は、データを当社のAnimals配列に保存するコード行が含まれていることを確認し、petIDを構築するためのコード行が含まれていることを確認してください。

  10. 犬と猫の追加の動物の説明を作成できること、および動物の特性が ourAnimals 配列に保存されていることを確認します。

  11. アプリケーションを終了し、ターミナル パネルを閉じます。

このガイド付きプロジェクトを完了しておめでとうございます。 選択ステートメントと反復ステートメントを組み合わせてアプリケーションの設計目標を達成するアプリケーションを作成しました。 アプリケーションには 300 行を超える行が含まれており、プロのアプリケーションで見つかる可能性のあるタスクを実行します。 このプロジェクトを完了すると、大きな成果が得られます。 ご成功をお祈りします。