Q & A

시삽: 레드플러스 님 
게시판 이동:
 제목 : Re : C#교과서 321P 예제
글번호: 980
작성자: 레드플러스
작성일: 2021/10/28 오후 4:59:00
조회수: 1845

 

네, 말씀주신 내용이 맞습니다.

 

사용자로부터는 1, 2, 3을 입력 받았지만,

출력용 문자열 배열은 0, 1, 2 번째 문자열이 들어 있습니다.

그래서, 가위, 바위, 보 문자열을 정확히 출력하려면, 

choice 배열의 인덱스를 맞추어야 합니다.

iRandon과 iSelection 변수에는 1, 2, 3 만을 저장하여 사용하지만,

choice는 0, 1, 2 순서의 인덱스를 사용해야 합니다.

 

우리가 흔히 사고하는 방식은 1, 2, 3이지만,

배열에 저장되는 데이터는 0, 1, 2 형태의 인덱스의 차이로 보면 좋습니다. 

 

물론, 사용자가 1, 2, 3 이외의 값을 입력하면 현재 프로그램은 에러가 나게 되어 있습니다. 

 

감사합니다.

 

 

using System;

class RockPaperScissors
{
    static void Main()
    {
        int iRandom = 0; // 1(가위), 2(바위), 3(보)
        int iSelection = 0; // 사용자 입력(1~3)

        //[!] 0번째 인덱스 "가위", 1번째 인덱스 "바위", 2번째 인덱스 "보"
        string[] choice = { "가위", "바위", "보" }; 

        // 컴퓨터의 랜덤값 지정
        iRandom = (new Random()).Next(1, 4);

        Console.Write("1(가위), 2(바위), 3(보) 입력 : _\b");
        iSelection = Convert.ToInt32(Console.ReadLine());

        //[!] 사용자로부터 입력받은 값에서 1을 빼야 배열의 인덱스에 위치하는 문자열과 일치 
        Console.WriteLine("\n 사용자: {0}", choice[iSelection - 1]);
        Console.WriteLine(" 컴퓨터: {0}\n", choice[iRandom - 1]);

        // 결과 출력
        if (iSelection == iRandom)
        {
            Console.WriteLine("비김");
        }
        else
        {
            switch (iSelection)
            {
                case 1: Console.WriteLine((iRandom == 3) ? "승" : "패"); break;
                case 2: Console.WriteLine((iRandom == 1) ? "승" : "패"); break;
                case 3: Console.WriteLine((iRandom == 2) ? "승" : "패"); break;
            }
        }
    }
}

 

 


On 2021-10-28 오후 3:14:00, '최승희' wrote:

 

 


int iRandom = 0;
            int iSelction = 0;
            string [] choice = {"가위", "바위", "보"};

            iRandom = (new Random()).Next(1, 4);

            Console.Write("1(가위),2(바위),3(보) 입력 : _\b");
            iSelction = Convert.ToInt32(Console.ReadLine());

            Console.WriteLine("\n사용자 : {0}", choice[iSelction -1]);
            Console.WriteLine("컴퓨터 : {0}\n", choice[iRandom -1]);

 

여기서 choce[iSelction  -1]을 한이유가
choice 배열에 인트형으로 변환해서 넣었는데 그냥 -1안하고 1,2,3으로하면
배열인덱스는 0,1,2 식하는데 그럼 안맞아서 오류가 나는게 맞는건가요? 

그래서 iRamdom 변수 지정값도 1,4를줘서 뺴준거 맞나요??

 
이전 글   다음 글 삭제 수정 답변 글쓰기 리스트

(댓글을 남기려면 로그인이 필요합니다.)

관련 아티클 리스트
  제       목 파일 작성자 작성일 조회
이전글 db first로 개발에 관한 질의 - 김준호 2021-11-15 1893
  C#교과서 321P 예제 - 최승희 2021-10-28 2018
현재글 Re : C#교과서 321P 예제 - 레드플러스 2021-10-28 1845
다음글 C# Upgrade 문의 - 김광호 2021-10-15 2050
 
손님 사용자 Anonymous (손님)
로그인 Home