배열 예제 복습
2023. 7. 25.

inventory.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;

namespace Starcraft
{
    internal class Inventory
    {
        //멤버변수
        int capacity;
        int index;
        private Item[] items;
        public string Name { get; set; }
        //생성자
        public Inventory(int capacity) {
            this.capacity = capacity;

            //아이템을 그룹화, 관리
            items = new Item[this.capacity];
        }

        //메서드
        public void AddItem(Item item)
        {//아이템 추가
         //아이템을 요소로 할당
         
            int lastIndex = this.capacity - 1;

            if (this.index > lastIndex) {
                Console.WriteLine("공간이 부족 합니다.");
                return;
            }

            //Console.WriteLine("=> {0}", item.name);
            //index : 0
            //배열의 index 요소에 값넣기 
            this.items[index] = item;
            index++;
        }

        public Item GetItemByName(string searchName)
        {//itenName으로 배열 요소가 있는지 출력
            Item foundItem = null;

            for (int i = 0; i < this.items.Length; i++)
            {

                Item item = this.items[i];
                if (item != null)
                {
                    if (item.Name == searchName)
                    {
                        this.items[i] = null;
                        foundItem = item;
                        break;
                    }
                    

                }
            }
            return foundItem;
        }

        public void PrintAllItems()
        {
            for(int i=0; i < this.items.Length; i++)
            {
                Item item = this.items[i];
                if (item != null)
                {                 
                    Console.WriteLine("{0}",item.Name);
                }
                else
                {
                    Console.WriteLine("[  ]");
                }
            }
        }
    }
}

 

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading.Tasks;

namespace Starcraft
{
    internal class App
    {
        //생성자
        public App()
        {
            //크기가 5인 정수형 배열 arr 정의
            int[] arr;
            arr = new int[5];
            //출력
            Console.WriteLine(arr); //배열의 인스턴스
            Console.WriteLine(arr.Length); //5
            //배열의 요소 접근
            //인덱스는 0부터 ~arr.Length - 1(마지막 인덱스)
            Console.WriteLine(arr[0]);//0
            Console.WriteLine(arr[1]);//1
            Console.WriteLine(arr[2]);//2
            Console.WriteLine(arr[3]);//3
            Console.WriteLine(arr[4]);//4
            //배열을 순회 하는 방법
            for (int i=0; i < arr.Length; i++)
            {
                Console.WriteLine(arr[i]);

            }
            //foreach:배열의 요소를 수정하지 않는다.(읽을때만 사용해라)
            int idx = 0;
            foreach (int num in arr)
            {
                Console.WriteLine(num);
                idx++;
            }
            int index = 6;
            int lastIndex = arr.Length - 1;//4
            arr[0] = 1;
            arr[arr.Length - 1] = 2;//마지막 인덱스 요소에 값을 할당
            if(index <= lastIndex)
            {
                arr[index] = 3;
            }
            else
            {
                Console.WriteLine("범위를 벗어남");
            }


        }

    }
}

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading.Tasks;

namespace Starcraft
{
    internal class App
    {
        //생성자
        public App()
        {
            //문자열 배열 변수 정의 (itemNames)
            string[] itemNames;
            //길이가 3인 문자열 배열 인스턴스를 생성하고 변수에 할당
            itemNames = new string[3];
            //배열의 길이를 출력
            Console.WriteLine(itemNames.Length);
            // 배열 요소에 값 할당
            itemNames[0] = "장검";
            itemNames[1] = "단검";
            //배열을 순회 하며 요소의 값 출력
            for (int i = 0; i < itemNames.Length; i++)
                Console.WriteLine("{0}: {1}", i, itemNames[i]);

            Console.WriteLine("------------------------");
            //foreach를 사용해 배열 요소를 출력
            foreach (string itemName in itemNames)
                Console.WriteLine("=>{0}", itemName);

        }

    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading.Tasks;

namespace Starcraft
{
    internal class App
    {
        //생성자
        public App()
        {
            //빈 배열을 만든다.
            string[] itemNames = new string[3];
            //각 요소의 값이 있는 배열을 만든다
            string[] itemNames1 = {"장검","단검","활"};
            string[] itemNames2 = new string[] { "장검", "단검", "활" };

            foreach(string itemName in itemNames1)
            {
                Console.WriteLine("=>{0}", itemName);
            }
            Console.WriteLine("배열의 크기: {0}", itemNames1.Length);
            //처리되지 않은 예외: System.IndexOutOfRangeException: 인덱스가 배열 범위를 벗어났습니다
            itemNames1[3] = "도끼";
        }

    }
}

'C# 기초 복습' 카테고리의 다른 글

Quaternion.identity, LookRotation, 비트 연산자  (0) 2023.08.21
Unity- Coroutines(코루틴)  (0) 2023.08.08
2주차 복습  (0) 2023.07.31
JSON예제, 대리자 복습  (0) 2023.07.27
1주차 복습  (0) 2023.07.24
myoskin