이칙(+,-) 계산기
package Test1;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
public class Calculator {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("계산 수식 : ");
String susik = scanner.nextLine(); //엔터 치기 전까지 입력 해야함
String[] operand = susik.split("\\+|\\-"); // suplit -> + or -를 만나면 쪼개라, 연산자 앞의 숫자를 배열에 넣음
Queue<Character> operator = new LinkedList<Character>(); //문자라서 Character형
for (int i = 0; i < susik.length(); i++) {
if(susik.charAt(i)=='+') { //susik의 문자열에서 +를 만나면 +를 operator(큐)에 넣어라
operator.add('+');
continue;
}
else if(susik.charAt(i)=='-') {
operator.add('-');
continue;
}else {
continue; //숫자가 들어오면 계속 진행 되도록
}
}
int plusSum = 0; int minusSum = 0; int result = 0;
plusSum = Integer.parseInt(operand[0]); //Integer.parseInt 함수로 문자열을 정수로 바꿈
// 첫번째 피연산자는 바로 넣음
for (int i = 1; i < operand.length; i++) { //첫번째는 고정 했으니 2번째 부터 시작 -> i 초기값 1로 시작
try {
char ch = operator.poll(); //큐에서 데이터(연산자)를 꺼내옴, 만약 큐가 비어있다면 NULL을 반환
if(ch == '+') {
plusSum += Integer.parseInt(operand[i]);
continue;
}else if(ch == '-') {
minusSum += Integer.parseInt(operand[i]);
continue;
}
} catch (NullPointerException e) {
break;
}
}
result = (plusSum - minusSum);
System.out.println("결과 : "+result);
}
}
'Programming > JAVA' 카테고리의 다른 글
[JAVA] LINKEDLIST를 이용한 성적처리 (3) | 2018.04.15 |
---|---|
[JAVA] 경로 (1) | 2018.04.15 |
[JAVA] 성적 처리 (0) | 2018.04.15 |
[JAVA] Wrapper Class (0) | 2018.04.14 |
[JAVA] 쓰레드(Thread) (12) | 2018.03.25 |