반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 코드업 1020 java
- 프로그래머스 가운데 글자 가져오기 자바
- 프로그래머스 가운데 글자 가져오기 파이썬
- 트리의 지름 java
- 트리의 지름 자바
- m1 docker install
- 가운데 글자 가져오기 python
- 청년 Ai Big Data 아카데미
- docker remove
- codeup 1020 java
- 가운데 글자 가져오기 java
- 최소 스패닝 트리 자바
- 프로그래머스 나누어 떨어지는 숫자 배열 자바
- 가운데 글자 가져오기 파이썬
- docker 삭제
- 핸즈온 머신러닝
- m1 docker
- 나누어 떨어지는 숫자 배열 java
- 최단 경로 알고리즘
- docker 완전 삭제
- 빅분기실기
- 나누어 떨어지는 숫자 배열 python
- 코드업 1020 자바
- 프로그래머스 가운데 글자 가져오기 python
- 청년 AI Big Data 아카데미 13기
- 가운데 글자 가져오기 자바
- 프로그래머스 나누어 떨어지는 숫자 배열 파이썬
- codeup 1020 자바
- 빅데이터분석기사
- 최소 스패닝 트리
Archives
- Today
- Total
NineTwo meet you
[Java] 토이 프로젝트 1 : 계산기 만들기 - 예외처리 본문
반응형
2021/01/02 - [자바] - [Java] 토이 프로젝트 1 : 계산기 만들기 - 후위 표기법 이용
에 이어서 예외처리에 대한 포스팅을 한다.
1. AC 처리
if(cur.equals("AC")) { //AllClear
this.label.setText("0");
}
2. 첫 입력이 0일 때
else if(this.label.getText().equals("0") && (cur.equals("0") || cur.equals(")"))){
this.label.setText("0");
}
3. ")" 일 경우
- 첫 입력으로 주어진 경우 => 입력 안됨
- 바로 앞 글자가 "(" 또는 "%"를 제외한 연산자인 경우 => 입력 안됨
else if(cur.equals(")")){
char preString = this.label.getText().charAt(this.label.getText().length()-1);
if(preString == '(' || preString == '+' || preString == '-' || preString == 'X' || preString == '/') {
this.label.setText(this.label.getText());
}else {
this.label.setText(this.label.getText() + this.text);
}
}
4. 연산자일 경우
- 첫입력으로 주어진 경우 => "-"는 음수 처리, 나머지 연산자는 0 붙여 주기
- 연산자 중복으로 입력된 경우 => 이전 연산자 대신 새로 입력된 연산자 입력
// -로 시작하는 경우 예외 처리
if(str.charAt(0) == '-') {
str = "0" + str;
}
else if(cur.equals("+") || cur.equals("-") || cur.equals("X") || cur.equals("/") || cur.equals("%")){
char preString = this.label.getText().charAt(this.label.getText().length()-1);
if(this.label.getText().equals("0")) { // 아무 숫자도 입력되지 않았을 경우
if(cur.equals("-")) {
this.label.setText(this.text);
}else {
this.label.setText(this.label.getText() + this.text);
}
}else {
if(cur.equals("%")) {
if(preString == '+' || preString == '-' || preString == 'X' || preString == '/') { // 앞문자가 숫자가 아니라면
this.label.setText(this.label.getText().subSequence(0, this.label.getText().length()-1) + this.text);
}else {
this.label.setText(this.label.getText() + this.text);
}
}else { // '+', '-', 'X', '/' 연산자 인 경우
if(preString == '+' || preString == '-' || preString == 'X' || preString == '/'){
this.label.setText(this.label.getText().subSequence(0, this.label.getText().length()-1) + this.text);
}else {
this.label.setText(this.label.getText() + this.text);
}
}
}
}
5. 올바른 괄호인지 체크
// 올바른 괄호인지 판단
static boolean checkCorrectBracket(String str) {
Stack<Character> check = new Stack<>();
for(int i = 0; i < str.length(); i++) {
if(str.charAt(i) == '(') {
check.push('(');
}else if(str.charAt(i) == ')') {
if(!check.isEmpty()) {
check.pop();
}else {
return false;
}
}
}
if(check.isEmpty()) {
return true;
}else {
return false;
}
}
//올바른 괄호가 아니면 Error 메시지 출력
if(!checkCorrectBracket(str)) {
return "Bracket Error";
}
전체 코드는 github에서 확인할 수 있다.
반응형
'프로그래밍언어 > 자바' 카테고리의 다른 글
[자바 웹을 다루는 기술 요약] 웹 프로그래밍 기본 (0) | 2021.06.27 |
---|---|
[자바 웹을 다루는 기술 요약] 프로그램 발전 과정 (0) | 2021.06.27 |
[Java] 토이 프로젝트 1 : 계산기 만들기 - 후위 표기법 이용 (0) | 2021.01.02 |
[Java] 문자형, 정수형, 실수형 형변환 및 진수 변환 (0) | 2020.12.29 |
[Eclipse] Eclipse 플러그인 windowbuilder 설치 (0) | 2020.12.23 |
Comments