스토리지

[3.15] 배열 복습 본문

Unity/수업내용(C#)

[3.15] 배열 복습

ljw4104 2021. 3. 15. 10:28

1.

using System;

namespace Study05
{
    public class App
    {
        public App()
        {
            Console.WriteLine("App");

            //형식이 있는 배열변수 선언
            string[] itemNames;

            //배열 인스턴스 형성하고 초기화, 변수에 할당
            //itemNames = new string[2];
            //요소가 있는 배열
            itemNames = new string[3] { "장검", "단검", null };

            //배열의 길이 출력
            Console.WriteLine("배열의 길이 : {0}", itemNames.Length);

            //배열의 x인덱스에 요소의 값 할당
            itemNames[itemNames.Length - 1] = "활";

            //배열의 x인덱스 요소의 값 출력
            string itemName = itemNames[itemNames.Length - 1];
            Console.WriteLine("{0}번째 값 : {1}", itemNames.Length, itemNames[itemNames.Length - 1]);

            //for문을 사용해서 배열의 요소 값 출력
            for (int i = 0; i < itemNames.Length; i++)
            {
                Console.WriteLine("{0} : {1}", i + 1, itemNames[i]);
            }

            //foreach문을 사용해서 배열의 요소 값 출력
            foreach(string i in itemNames)
            {
                Console.WriteLine(i);
            }
        }
    }
}

 

2.

using System;

namespace Study05
{
    public class App
    {
        enum eItemLevel
        {
            NORMAL,
            MAGIC,
            LEGEND
        }
        public App()
        {
            Console.WriteLine("App");

            string[] arrNames = { "장검", "단검", "활", "도끼" };
            int[] arrDamages = { 20, 32, 55, 12 };
            eItemLevel[] arrLevel = { eItemLevel.NORMAL, eItemLevel.MAGIC, eItemLevel.NORMAL, eItemLevel.LEGEND };

            Console.WriteLine("배열의 길이 : {0}", arrNames.Length);

            arrNames[arrNames.Length - 1] = "전설 도끼";

            for(int i = 0; i < arrNames.Length; i++)
            {
                Console.WriteLine("{0}, {1}, {2}", arrNames[i], arrDamages[i], arrLevel[i]);
            }

            Console.WriteLine();

            int index = 0;
            foreach(string i in arrNames)
            {
                Console.WriteLine("{0}, {1}, {2}", i, arrDamages[index], arrLevel[index]);
                index++;
            }
        }
    }
}

Foreach로는 하나의 배열에 대한 요소의 값만 불러올 수 있다. 여러개의 배열을 하나의 foreach문으로 출력하기 위해서는 따로 인덱스 선언이 필요하다.

 

아이템 등급을 enum 타입이 아닌 Int배열로 선언했을 때)

using System;

namespace Study05
{
    public class App
    {
        enum eItemLevel
        {
            NORMAL,
            MAGIC,
            LEGEND
        }
        public App()
        {
            Console.WriteLine("App");

            string[] arrNames = { "장검", "단검", "활", "도끼" };
            int[] arrDamages = { 20, 32, 55, 12 };
            //eItemLevel[] arrLevel;
            //arrLevel = new eItemLevel[]  { eItemLevel.NORMAL, eItemLevel.MAGIC, eItemLevel.NORMAL, eItemLevel.LEGEND };
            int[] arrLevel = new int[]{ 1, 2, 1, 3 };

            Console.WriteLine("배열의 길이 : {0}", arrNames.Length);

            arrNames[arrNames.Length - 1] = "전설 도끼";

            for(int i = 0; i < arrNames.Length; i++)
            {
                Console.WriteLine("{0}, {1}, {2}", arrNames[i], arrDamages[i], (eItemLevel)arrLevel[i]);
            }

            Console.WriteLine();

            int index = 0;
            foreach(string i in arrNames)
            {
                Console.WriteLine("{0}, {1}, {2}", i, arrDamages[index], (eItemLevel)arrLevel[index++]);
            }
        }
    }
}

 

 

3.

using System;

namespace Study05
{
    public class App
    {
       public App()
        {
            string[] arrNames = { "장검", "단검", "활", "도끼" };

            for(int i = 0; i < arrNames.Length; i++)
            {
                if (arrNames[i].Equals("단검"))
                {
                    Console.WriteLine("단검을 찾았습니다, index:{0}", i);
                }
            }
        } 
    }
}

 

 

4. 단검이 배열에 없을 때

using System;

namespace Study05
{
    public class App
    {
       public App()
        {
            string[] arrNames = { "장검", "검", "활", "도끼" };

            bool isFind = false;
            for(int i = 0; i < arrNames.Length; i++)
            {
                if (arrNames[i].Equals("단검"))
                {
                    Console.WriteLine("단검을 찾았습니다, index:{0}", i);
                    isFind = true;
                }
            }

            if (!isFind)
            {
                Console.WriteLine("단검을 찾을 수 없습니다.");
            }
        } 
    }
}

 

 

5. 클래스를 사용하여 구현

using System;

namespace Study05
{
    public class Item
    {
        enum eItemLevel
        {
            NORMAL,
            MAGIC,
            LEGEND
        }

        private string name;
        private int damage;
        private int itemLevel;

        public Item()
        {
            Console.WriteLine("ITEM 생성됨");
        }

        public Item(string name, int damage, int itemLevel)
        {
            Console.WriteLine("ITEM 생성됨");
            this.name = name;
            this.damage = damage;
            this.itemLevel = itemLevel;
        }

        public void SetName(string name)
        {
            this.name = name;
        }

        public string GetName()
        {
            return this.name;
        }

        public void SetDamage(int damage)
        {
            this.damage = damage;
        }

        public int GetDamage()
        {
            return this.damage;
        }

        public void SetItemLevel(int itemLevel)
        {
            this.itemLevel = itemLevel;
        }

        public int GetItemLevel()
        {
            return itemLevel;
        }

        public void Print()
        {
            Console.WriteLine("{0}, {1}, {2}", this.name, this.damage, (eItemLevel)this.itemLevel);
        }
    }
}
using System;

namespace Study05
{
    public class App
    {
       public App()
        {
            Item item1 = new Item("장검", 20, 0);
            Item item2 = new Item("단검", 32, 1);
            Item item3 = new Item();
            Item item4 = new Item();

            item3.SetName("활");
            item3.SetDamage(55);
            item3.SetItemLevel(0);

            item4.SetName("전설 도끼");
            item4.SetDamage(55);
            item4.SetItemLevel(2);

            item1.Print();
            item2.Print();
            item3.Print();
            item4.Print();
        } 
    }
}

'Unity > 수업내용(C#)' 카테고리의 다른 글

[3.15] 배열, 클래스 심화 - 인벤토리 구현  (0) 2021.03.15
[3.15] 배열 복습 2 - 강화 & 합성 기능추가  (0) 2021.03.15
[3.12] 상속 예제 1  (0) 2021.03.12
[3.12] 상속 Inheritance  (0) 2021.03.12
[3.12] Array 연습  (0) 2021.03.12
Comments