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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
package pack02;
import java.util.*;
public class StringCalculator {
public static void main(String[] args) {
LinkedList<Integer> numList = new LinkedList<Integer>(); //숫자관련
LinkedList<Character> opList = new LinkedList<Character>(); //연산자 관련
Scanner sc = new Scanner(System.in);
String s = sc.nextLine(); //enter까지 포함한 것까지 입력
String num = ""; //연사자 외에 숫자들을 임시 저장할 곳
for(int i = 0; i < s.length(); i++) {
char ch = s.charAt(i); //string을 char 타입 단위로 나눔
if(ch == '+' || ch =='-' || ch == '*' || ch == '/') {
numList.add(Integer.parseInt(num)); //숫자로 바꿔서 숫자배열에 추가
opList.add(ch); //연산자를 연산자배열에 추가
num = ""; //임시로 저장된 숫자를 비워준다
continue; //제일 가까운 명령문으로 이동
}
num += ch; //연산자 앞까지의 숫자를 임시로 넣어 놓음
}
numList.add(Integer.parseInt(num)); //마지막 숫자
while(!opList.isEmpty()) { //연산자배열이 빌 때까지
int prevNum = numList.poll(); //poll : 앞부터 완전히 뺀다
int nextNum = numList.poll();
char op = opList.poll();
if(op == '+') {
numList.addFirst(prevNum + nextNum); //addFirst 배열 제일 앞에 넣는다
} else if(op == '-') {
numList.addFirst(prevNum - nextNum);
} else if(op == '*') {
numList.addFirst(prevNum * nextNum);
} else if(op == '/') {
numList.addFirst(prevNum / nextNum);
}
}
System.out.println(numList.poll());
}
}
|
cs |
'Programming > [JAVA]' 카테고리의 다른 글
[JAVA, 자바]Stack, Queue Memory & DynamicBinding영역 (스택, 큐 메모리 & 동적바인딩) (0) | 2018.03.21 |
---|---|
[JAVA, 자바]Wrapper Class (래퍼 클래스) (0) | 2018.03.21 |
[JAVA, 자바] 성적 처리 프로그램(toString 이용) (0) | 2018.03.21 |
[JAVA, 자바] 성적 처리 프로그램 (0) | 2018.03.21 |
[JAVA] 자바의 정의와 설치 및 환경변수 (0) | 2018.03.20 |