티스토리 뷰
[ 초보자를 위한 C# 200제 ] C#_004
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace Project_004{public partial class Form1 : Form{public Form1(){InitializeComponent();//-------------------이곳에 초기화 -------------------//this.Clear(); // 메서드 호출}private void Clear(){this.txtNum1.Text = ""; // 텍스트박스 청소this.txtNum2.Text = "";this.txtResult.Text = "";this.IbResult.Text = "Ready"; // 라벨 초기화}// 숫자 타입 문자열을 숫자로 형변환, 메서드 선언private double Calculator(string sx, string sy){//sx와 sy 중 하나라도 공백이거나 null이면 참을 리턴하고,//if의 조건을 충족하여 아래 바디를 실행한다.// string.IsNullOrEmpty(문자열)는 공백이거나 널(null)이면 true(참)를,// 아니면 false(거짓)를 리턴한다.// ||은 논리 연산자(OR)로 false || false일때만 false이고, 그 외는 모두 true이다.if (string.IsNullOrEmpty(sx) || string.IsNullOrEmpty(sy)){// MessageBox.Show(문자열)은 입력된 문자열을 메지시박스로 보여준다.MessageBox.Show("공백이 입력되었습니다. 다시 입력하세요.");this.Clear(); // 다른 수를 입력할 수 있도록 청소한다.// 적어도 하나가 공백이면 throw를 이용하여 예외를 발생시킨다.// 원하는 조건에서 예외를 발생시키는 방법!// throw 예외 발생은 new를 이용하여 Exception을 발생(생성)시킨다.// throw가 발생하는 Calculator()은 아랫 줄에서 바디가 끝난다.throw new Exception("공백이 입력되었습니다. 다시 입력하세요. ");}// 잘못된 요구가 발생할 수 있는 경우에는 try{}에서 작업을 하고,// 잘못된 요구를 실행하지 않도록 예외를 잡을 때(예외 처리)는 catch{}를 이용한다.try{// 숫자 타입 문자열이 아닐 때 double.Parse()는 예외를 발생시킬 수 있으므로// try{} 안에서 실행한다.double x = double.Parse(sx.Trim());double y = double.Parse(sy.Trim());return (x + y);}catch{// try{}에서 실행하다가 숫자 타입 문자열이 아닌 일반 문자가 들어오면// 예외가 발생되고, 잘못된 요구가 실행되지 않도록//try{} 안의 실행을 멈추고 catch{}로 자동 이동한다.// 메시지박스를 띄워 요구가 잘못되었다는 것을 알리고, 텍스트박스를 청소한다.MessageBox.Show("숫자를 입력하세요. 다시 입력하세요. ");this.Clear();// Calculator()를 호출할 때// 예외를 알려주면서 강제로 실행을 멈추기 위해 예외를 다시 던질 수 있다.throw new Exception("숫자를 입력하세요. 다시 입력하세요. ");}}private void btnAdd_Click(object sender, EventArgs e){try{// Calculator()를 호출할 때, 발생할 수 있는 예외가 있기 때무에 try{}로 감싼다.// 공백이나 null 또는 숫자 타입 이외의 문자열이 들어오면 잘못된 요구를 실행하지 않도록// catch로 예외를 던지면서 try{}를 끝낸다.double num = Calculator(this.txtNum1.Text, this.txtNum2.Text);this.txtResult.Text = num.ToString();this.IbResult.Text = "+";}// 앞에서 메시지박스도 띄워주고 예외도 발생시켰으므로 더 이상 처리할 것이 없어 비웠다.catch { }}private void btnClear_Click(object sender, EventArgs e){this.Clear(); // 텍스트박스, 라벨 청소와 초기화}}}
[ 결과 ]
'SW > C#' 카테고리의 다른 글
[ 초보자를 위한 C# 200제 ] C#_006 (0) | 2018.03.21 |
---|---|
[ 초보자를 위한 C# 200제 ] C#_005 (0) | 2018.03.21 |
[ 초보자를 위한 C# 200제 ] C#_003 (0) | 2018.03.20 |
[ 초보자를 위한 C# 200제 ] C#_002 (0) | 2018.03.19 |
[ 초보자를 위한 C# 200제 ] C#_001 (0) | 2018.03.19 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 서울대
- 정수
- 기계적 추론
- 컴퓨터과학
- c
- 동적
- 나눗셈
- 계산기
- 튜링
- 비전공자
- 두 수 입력
- 영화
- 수리 명제 자동판결 문제
- 앨런 튜링
- 프로그램
- dynamic
- 유니티 기초
- 이광근
- 에니그마
- 프로그래밍
- 컴퓨터과학이 여는 세계
- 오버플로우
- 기본개념
- 뇌를 자극하는 C# 5.0 프로그래밍
- 독서
- 초보
- 컴퓨터의 시초
- 메서드
- 초보자를 위한 C# 200제
- c#
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함