백준 Stack 문제를 풀던 도중
mport java.util.ArrayList;
import java.util.Scanner;
public class Stack {
ArrayList<String> stackSave = new ArrayList<>();
void push(String saveNumber) {
stackSave.add(saveNumber);
System.out.println("push method start saveNumber = " + saveNumber);
}
void pop() {
}
void size() {
}
void empty() {
}
void top() {
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int stackLenth = sc.nextInt(); //sc.nextint() 시작
Stack stack = new Stack();
for (int i = 1; i < stackLenth; i++) {
String stackCommend = sc.nextLine(); // sc.nextLine(); 시작
System.out.println(stackCommend);
String[] stackComent = stackCommend.split("\\s+");
switch (stackComent[0]) {
case "push":
stack.push(stackComent[1]);
break;
case "pop":
stack.pop();
break;
case "size":
stack.size();
break;
case "empty":
stack.empty();
break;
case "top":
stack.top();
break;
}
}
}
}

위에 사진 처럼 처럼 3 을 입력후 공백이 생겨 원하는 결과를 얻을 수 없었다.
원하는 결과을 얻을 수 없었던 이유는
-Scanner.nextInt 메소드는 가장 마지막 (개행문자) 엔터을 제거하지 않고
개행문자(엔터)전까지만 숫자로 입력받는다. 이 부분에서 문제가 생기는데
이후 nextLine( ) 사용하게 되면 다음 nextLine( ) 에 Scanner.nextInt 엔터키가 입력되어
nextLine( ) 에 공백이 입력되어 처리되어 문제가 발생했기 때문이다.
해결방법은
Scanner.nextInt을 nextLine( ) 으로 바꾸고 형변환을 해주어 해결 했다.
String Lenth = sc.nextLine();//sc.nextint() 시작
이 부분을
String lenth = sc.nextLine(); //sc.nextLine() 으로 변환
int stackLenth = Integer.parseInt(lenth);
으로 변환하였다

원하는 결과를 얻을 수 있었다!!!!