0
사용자에게 대화 형 스택을 만들려고합니다. 데이터를 하나씩 또는 모두 팝핑 할 수있는 선택권을 부여합니다. 내 문제는, 그냥 데이터를 팝업하려고하면 그것은 빈 문자열을 제공합니다. 당신은 데이터를 두 번 팝업 도움을스택 상단을 팝업하지 못했습니다.
package Tugas;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.EmptyStackException;
import java.util.Scanner;
import java.util.Stack;
import java.util.logging.Level;
import java.util.logging.Logger;
public class myStack {
private static Stack<Integer> stack;
private static int size;
public static void main(String[] args) {
System.out.println("Enter amount numbers : ");
size = inputData();
createStack(size);
readData();
Scanner scanner = new Scanner(System.in);
System.out.println("Take it All (y) or one by one (n)");
String input = scanner.next();
if (input.equals("y")) {
writeData();
} else {
popData();
writeData();
String confirm;
Scanner scanner2 = new Scanner(System.in);
System.out.println("Take again ? ");
confirm = scanner2.next();
if (confirm.equals("y")) {
popData();
writeData();
}
}
}
private static void createStack(int size) {
stack = new Stack<>();
}
private static void writeData() {
int dataStack;
System.out.println(" The contains of data: ");
for (int i = 0; i < size; i++) {
try {
dataStack = stack.pop();
System.out.println("Value of stack at " + (i + 1) + " : " + dataStack);
} catch (EmptyStackException e) {
}
}
}
private static void readData() {
int data;
System.out.println("===== all data =====");
for (int i = 0; i < size; i++) {
System.out.print("The data at : " + (i + 1) + " : ");
data = inputData();
stack.push(data);
}
}
private static void popData() {
int dataStack;
System.out.println("=== Pop a data : ===");
dataStack = stack.pop();
}
private static Integer inputData() {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String input = null;
try {
input = br.readLine();
} catch (IOException ex) {
Logger.getLogger(Tumpukan.class.getName()).log(Level.SEVERE, null, ex);
}
int data = Integer.parseInt(input);
return data;
}
}
감사합니다 ...
'writeData' 메소드에서했던 것처럼 아무 것도 해결하지 않지만 예외를 삼켜서는 안됩니다. 최소한 스택 추적을'e.printStackTrace()'로 출력하십시오. – Pshemo
이렇게하면 다음과 같은 예외가 생깁니다. "main"스레드의 예외 java.util.EmptyStackException – user2975455
질문에 가장 유용한 정보가 포함 된 임의의 주석을 게시하지 마십시오. ** 표시된 스택 번호를 ** ** 질문에 ** 표시하는 ** 전체 스택 추적 **을 ** 복사하여 붙여 넣기해야합니다. –