//1-1 사용자로부터 입력받기 using System; namespace practice1 { class Program { static void Main(string[] args) { string name = "dddd"; int age = 0; string input; bool isint = false; while (name.Length > 3) { Console.WriteLine("이름을 입력하십시오(3글자 이내):"); name = Console.ReadLine(); if (name.Length > 3) { Console.Clear(); Console.WriteLine("3글자 이내로 입력하여 주십시오"); } } while (!isint) { Console.WriteLine("나이를 입력하십시오:"); input = Console.ReadLine(); isint = int.TryParse(input, out age); if (isint == false) { Console.Clear(); Console.WriteLine("숫자를 입력하여 주십시오"); } } Console.Write(name + "의 나이는 " + age + "세 입니다."); } } }
코드 수정내용
1. 처음 코드 작성 시 전체 while문 안에 나이 while문을 삽입하여 구성하였더니 코드 가독성이 너무 떨어지고 복잡해 보였음. while문이 위에서부터 진행되기 때문에 이름 부분을 while문 1개, 나이부분을 while문 1개로 작성하여 가독성을 높임.
2. while문을 실행하기 위해 name변수의 초기화가 필요했음. do while문을 사용하면 초기화 하지 않고도 더 간단하게 코드작성 가능
bool isnum; int num2; bool isnum2; string input; string input2; do { Console.WriteLine("첫번째 숫자를 입력해주세요"); input = Console.ReadLine(); isnum = int.TryParse(input, out num); if (!isnum) { Console.Clear(); Console.WriteLine("숫자를 입력해주세요"); } }while (!isnum); do { Console.WriteLine("두번째 숫자를 입력해주세요"); input2 = Console.ReadLine(); isnum2 = int.TryParse(input2, out num2); if (!isnum2) { Console.Clear(); Console.WriteLine("숫자를 입력해주세요"); } }while (!isnum2); int sum = num + num2; int minus = num - num2; int multi = num * num2; int div = num / num2; Console.WriteLine("더하기:"+ sum); Console.WriteLine("빼기:" + minus); Console.WriteLine("곱하기:" + multi); Console.WriteLine("나누기:" + div);
do while문을 사용하여 초기화 하지 않고 코드작성
2번에서 숫자1개만 입력받고 화씨 계산식 추가
float num; int num2; bool isnum; bool isnum2; string input; string input2; do { Console.WriteLine("키를 입력하세요(m)"); input = Console.ReadLine(); isnum = float.TryParse(input, out num); if (!isnum) { Console.Clear(); Console.WriteLine("숫자를 입력하세요"); } } while (!isnum); do { Console.WriteLine("체중을 입력하세요(kg)"); input2 = Console.ReadLine(); isnum2 = int.TryParse(input2, out num2); if (!isnum2) { Console.Clear(); Console.WriteLine("숫자를 입력하세요"); } } while (!isnum2); float bmi = num2 / (num * num); Console.WriteLine("당신의 BMI는 :" + bmi);
문제에서 키의 단위가 m로 제시되어 있어 첫번째 숫자를 float로 받게 됨.
사람들의 인식적으로나 자료형의 크기로나 첫번째 입력값을 cm단위의 정수로 받고 BMI계산식에서 10^4을 나눠주어 계산하는게 좋지 않았을까 생각함.