C#

[C#] - 입력받은 것이 숫자인지 판별 : int.TryParse(), 가변 길이 매개변수 : params

Riucc 2019. 4. 11. 14:55

○ 입력받은 것이 숫자인지 판별 : int.TryParse(), 가변 길이 매개변수 : params

 

- 입력받은 문자열이 숫자인지 판별하는 방법 : int.TryParse()

     int.TryParse()에서 반환이 성공했는지 여부를 true/false로 반환하고

     반환이 성공했다면 out으로 지정된 변수에 값을 반환한다


1
2
3
4
5
6
7
8
9
10
int numChk = 0; // num 체크를 위해 선언
string s = Console.ReadLine(); // 문자열 입력받기
// int.TryParse()이용, 입력받은 문자열과 numChk를 인자로 사용
// 반환값은 true / false
// 반환값에 따라 데이터를 처리해주면된다
bool isNum = int.TryParse(s, out numChk);
if (!isNum)
{
     Console.WriteLine("숫자가 아닌것을 입력");
     arr[i] = 0;
else {
     arr[i] = numChk;
}
cs

     

- 가변 길이 매개변수 : params

     몇 개의 인자를 입력받던 상관이 없다(가변 인자)

     입력받을 인자의 타입에 해당하는 배열을 선언 후 그 앞에 params 를 붙여주면 된다

        -> params 사용 시 : add(1,2,3,4,5,6...); 쉽게 사용이 가능하며,

            매개변수들을 일일이 정의할 필요가 없다

        -> params 사용하지 않을 시 : add(new int[]{1,2,3,4,5,6...}); 길게 써야한다


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
namespace ConsoleApp7
{
    class Program
    {
        static void Main(string[] args)
        {
            // params 사용한 경우
            int add(params int[] values)
            {
                int result = 0;
                for (int i = 0; i < values.Length; i++)
                    result += values[i];
 
                return result;
            }
 
// 10개의 문자열을 입력받아서 숫자인것만 합계를 구해 출력
// 문자열이 문자 시 0을 대입
            int[] arr = new int[10];
            for (int i = 0; i < 10; i++)
            {
                int numChk = 0;
                string s = Console.ReadLine();
                bool isNum = int.TryParse(s, out numChk);
                if (!isNum)
                {
                    Console.WriteLine("숫자가 아닌것을 입력");
                    arr[i] = 0;
                } else {
                    arr[i] = numChk;
                }
            }
            Console.WriteLine("합계 : " + add(arr));
        }
    }
}
cs



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
string[] arrStr = new string[10];
// params oject 타입 사용한 경우
void addObject(params object[] values)
    {
    for (int i = 0; i < values.Length; i++)
        arrStr[i] += values[i];
    }
 
// 10개의 문자열을 입력받아 배열에 넣어 
int v1 = 0;
do
{
    string s = Console.ReadLine();
    arrStr[v1] = s;
    v1++;
while (v1 < 10);
 
foreach(string item in arrStr)
    Console.Write("{0}, ", item);
cs